删除向量 STL 中最后一次出现的元素

Tha*_*elo -2 c++ stl vector c++11

如何仅删除 C++ 向量中最后一次出现的值?

我有这段代码。

if(vect.erase(std::remove(vect.begin(), vect.end(), oldVal),vect.end()) == vect.end()){
                cont++;                     
            }                               
            vect.push_back(newVal);
Run Code Online (Sandbox Code Playgroud)

它删除数组中某个值的所有实例。我需要它只删除向量中的最后一个特定元素。

向量示例:1 3 4 5 3 5 3 8 3 6

最后我想删除一个“3”然后应该得到:

1 3 4 5 3 5 3 8 6

是否有任何规范的解决方案或者我应该尝试堆栈操作系统列表?

BoB*_*ish 5

  1. std::find会找到一个元素
  2. std::reverse_iterator,通过访问myVector.rbegin()允许您从后面搜索。
  3. 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);
}
Run Code Online (Sandbox Code Playgroud)