C++ 擦除后重置循环中的迭代器

C++ 擦除后重置循环中的迭代器,c++,iterator,C++,Iterator,我正在尝试重置迭代器,因为它已被删除 while (vBegin != vEnd) { //some stuff; vectorThing.erase(vbegin); vbegin = vectorThing.begin(); vEnd = vectorThing.end(); } 这会导致vEnd等于我刚才删除的内容,如何使它像以前一样指向末尾?您知道您的容器是否为空吗?如果是,则end()函数返回与vector::begin()相同的迭代器值。也许这

我正在尝试重置迭代器,因为它已被删除

while (vBegin != vEnd)
{ 
    //some stuff; 
    vectorThing.erase(vbegin); 
    vbegin = vectorThing.begin();
    vEnd = vectorThing.end();
}

这会导致vEnd等于我刚才删除的内容,如何使它像以前一样指向末尾?

您知道您的容器是否为空吗?如果是,则end()函数返回与vector::begin()相同的迭代器值。也许这就是你所看到的? 例如,如果容器大小为1,而您刚刚删除了第一个元素,那么您将使用相同的开始和结束元素。

请尝试以下方法

while ( vBegin != vectorThing.end() )
{ 
    //some stuff; 
    vBegin = vectorThing.erase(vbegin); 
}


这导致vEnd等于我刚才删除的内容
不,它不等于。是什么让你产生了这个想法?我进入了一个调试器,调试器做到了,
vbegin
vbegin
之间的关系是什么?@randomname你为什么不在向量上迭代时使用
erase/remove\u if
习惯用法而不是擦除,也许你应该给我们看看真正的代码。
while ( vBegin != vEnd )
{ 
    //some stuff; 
    vBegin = vectorThing.erase(vbegin); 
    vEnd = vectorThing.end(); 
}