问题描述如下:
在容器遍历过程中怎样动态地删除满足条件的元素,而不影响容器本次的遍历过程
代码:
#include "stdafx.h" #include <list> #include <vector> #include <iostream> using namespace std; void main() { list<int> l; for(int i=0;i<10;i++) //存储1~10的元素值 { l.push_back(i+1); } list<int>::iterator it=l.begin(); while(it!=l.end()) { list<int>::iterator lsave; if(*it%2==0) //删除偶数元素 { lsave=it; it++; l.erase(lsave); } else { it++; } } it=l.begin(); while(it!=l.end()) //遍历该list { cout<<*it<<" "; it++; } //********************************** cout<<endl<<"*******************"<<endl; vector<int> vec; for(int i=0;i<10;i++) { vec.push_back(i+1); } vector<int>::iterator it1=vec.begin(); for(int i=0;i<vec.size();i++) { if(vec[i]%3==0) { vec.erase(i+it1); } } it1=vec.begin(); while(it1!=vec.end()) { cout<<*it1<<" "; it1++; } cout<<endl; system("pause"); }