Der*_*rek 2 c++ standard-library
我想从向量中删除一些迭代器,所以这就是我现在所拥有的.
void function(std::vector <class*> & vector)
{
std::vector <class*>::iterator it;
for(it = vector.begin(); iter != vector.end(); ++iter)
{
if(it->value == 1)
vector.erase(it);
}
Display(vector);
return;
}
Run Code Online (Sandbox Code Playgroud)
显然,当迭代器被移除时,这个代码给了我一个错误,它是向量中的最后一个,否则看起来它工作正常.我知道在这样的循环中修改向量可能不是理想的行为,但如果我必须这样做,那么最好的方法是什么?
谢谢.
for (it = vector.begin(); it != vector.end(); )
{
if (it->value == 1)
it = vector.erase(it);
else
++it;
}
Run Code Online (Sandbox Code Playgroud)
但对于这种情况,您实际上应该使用std::remove_if适当的谓词.