vector中erase后迭代器回退
小弟再看C++primer顺序容器时,写代码时出错了。
//删除vector中的偶数 for (vector<int>::iterator ix1=vec1.begin();ix1!=vec1.end();ix1++) { if ((*ix1)%2==0)//偶数 { ix1=vec1.erase(ix1); //cout<<*ix1<<endl;//此时的ix1已经是下一个元素的迭代器了 //--ix1;//这样迭代器回退不行??? } }
for (vector<int>::iterator ix1=vec1.begin();ix1!=vec1.end();) { if ((*ix1)%2==0)//偶数 { ix1=vec1.erase(ix1);//返回指向删除元素的下一个元素的迭代器 } else ix1++; }
//删除vector中的偶数 for (vector<int>::iterator ix1=vec1.begin();ix1!=vec1.end();) { if ((*ix1)%2==0)//偶数 { ix1=vec1.erase(ix1); //cout<<*ix1<<endl;//此时的ix1已经是下一个元素的迭代器了 //--ix1;//这样迭代器回退不行??? }else ix1++; }