我想在迭代向量时擦除某些元素,但下面的代码导致“向量迭代器不可递增”断言失败。
for(auto iter=vec.begin(); iter!=vec.end(); ++iter)
{
if((*iter).isDead())
{
std::swap(*iter, vec.back());//swap with the back
vec.pop_back(); //erase the element
}
}
这段代码有什么问题?