我正在尝试通过转移
来重置迭代器while (vBegin != vEnd)
{
//some stuff;
vectorThing.erase(vbegin);
vbegin = vectorThing.begin();
vEnd = vectorThing.end();
}
这导致vEnd等于我刚刚删除的东西,我怎样才能让它像以前一样指向最终?
答案 0 :(得分:0)
你知道你的容器是否是空的吗?如果是,则end()函数返回与vector :: begin()相同的迭代器值。也许这就是你所看到的? 例如,如果您的容器大小为1并且您刚删除了第一个元素,那么您将会遇到相同的开始和结束元素。
答案 1 :(得分:0)
尝试以下方式
while ( vBegin != vectorThing.end() )
{
//some stuff;
vBegin = vectorThing.erase(vbegin);
}
或
while ( vBegin != vEnd )
{
//some stuff;
vBegin = vectorThing.erase(vbegin);
vEnd = vectorThing.end();
}