存储要删除的矢量元素

gpa*_*lex 1 c++

我有一个向量V,我想存储此向量的哪些元素,我稍后将删除.

为此,我使用了另一个向量Y来存储我想要删除的V元素的迭代器.所以我迭代Y来访问我需要在V中删除的元素的迭代器.

问题是当你从V中擦除元素时,Y中的所有迭代器(指向V的元素)都变得无效.

我找不到任何答案,但它似乎是微不足道的,必须有一个简单的解决方法,不是吗?

rec*_*que 5

使用 V.erase(std::remove_if(V.begin(), V.end(), MyPredicate()), V.end())

  • 为什么需要双倍的工作?测试"要删除"条件的代码必须写在某处.无论是在`for`循环中还是在`struct MyPredicate`的`operator()`中编写,都不会使工作量增加一倍,并使您的代码更加通用. (2认同)