我从这里使用交换和弹出技术:擦除向量中的元素,同时使用交换和弹出进行迭代
下面的代码导致“向量迭代器不兼容”断言失败。
for(auto iter=vec.begin(); iter!=vec.end();)
{
if((*iter).isAlive())//update the entity if the entity is alive
{
(*iter).update();
++iter;
}
else //otherwise, get rid of it
{
std::swap(*iter, vec.back());
vec.pop_back();
}
}
但是,当我使用 std::list 而不是 std::vector 时,一切运行良好。
为什么在使用向量时会出现断言失败?