我有以下代码:
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()以便不等于运算符失败?
慕莱坞森
慕森王
繁花不似锦
相关分类