我有这样的代码:
int main()
{
vector<int> res;
res.push_back(1);
vector<int>::iterator it = res.begin();
for( ; it != res.end(); it++)
{
it = res.erase(it);
//if(it == res.end())
// return 0;
}
}
一个随机访问迭代器,指向函数调用擦除的最后一个元素后面的元素的新位置,如果操作擦除了序列中的最后一个元素,则该位置为向量结尾。
这段代码崩溃了,但是如果我使用if(it == res.end())
部分,然后返回,它就可以工作了。怎么会这样?for循环缓存了res.end()
,所以不等于运算符失败了吗?
https://stackoverflow.com/questions/4645705
复制相似问题