如何只删除C ++向量中最后一次出现的值?
我有这样的代码。
if(vect.erase(std::remove(vect.begin(), vect.end(), oldVal),vect.end()) == vect.end()){
cont++;
}
vect.push_back(newVal);
它会删除数组中值的所有实例。我需要它只删除向量中的最后一个特定元素。
实施例 矢量:1 3 4 5 3 5 3 8 3 6
结束我想删除'3'然后应该得到:
1 3 4 5 3 5 3 8 6
是否有任何规范解决方案或我应该尝试堆栈操作系统列表?
答案 0 :(得分:4)
std::find
会找到一个元素myVector.rbegin()
访问的std::reverse_iterator
允许您从后面搜索。erase()
如上所述。类似的东西:
auto foundIt = std::find(vect.rbegin(), vect.rend(), oldVal);
// Find first from the back, i.e. last
if (foundIt != vect.rend()) { // if it was found
// get back to the right iterator
auto toRemove = --(foundIt.base());
// and erase it
vect.erase(toRemove);
}