我有这样的代码:矢量擦除迭代
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()所以不等于运营商失败?
为什么不使用`res.clear()`? – Benoit 2011-01-10 10:25:11
相似问题:http://stackoverflow.com/questions/347441/erasing-elements-from-a-vector – Naveen 2011-01-10 10:29:01
因为这只是代码的简化,我并不是要删除真实代码中的所有元素 – hidayat 2011-01-10 10:37:21