【面试题】删除vector/list中的某个元素

来源:互联网 发布:python 求均值和方差 编辑:程序博客网 时间:2024/05/18 02:17

vector是一个动态数组,元素是连续存放的。

当删除vector中间的某个元素后,会导致后面的迭代器实效。

 

#include <vector>#include <iostream>#include <list>using namespace std;void main(){vector<int> array; array.push_back(1); array.push_back(2); array.push_back(3); array.push_back(3);array.push_back(4); array.push_back(5); vector<int>::iterator itr = array.begin(); while (itr != array.end()) { if (*itr == 3){itr=array.erase(itr);//删除值为3的元素 }++itr; } for(vector<int>::iterator i=array.begin(); i != array.end(); ++i){cout << *i <<' ';}//=============================================cout <<endl<<endl;list<int> l;l.push_back(1);l.push_back(2);l.push_back(2);l.push_back(2);l.push_back(1);l.push_back(2);list<int>::iterator j=l.begin();while(j != l.end()){if(*j == 2){l.erase(j++);}else{++j;}}for(list<int>::iterator i=l.begin(); i != l.end(); ++i){cout << *i << ' ';}}


 

 

原创粉丝点击