如何在遍历list,vector,map时删除符合条件的元素
1个回答
展开全部
int main(){ int a[]={1,2,3,4,5,6,7,8,9,10}; list<int> b=list<int>(); b.assign(a,a+10); vector<int> d; d.assign(a,a+10); map<int,int> c=map<int,int>(); for(list<int>::iterator it=b.begin();it!=b.end();it++){ c[*it]=*it; } //list中删除8,9 for(list<int>::iterator it=b.begin();it!=b.end();){ if(*it>=8&&*it<10){ it=b.erase(it); }else{ it++; } } //list中删除5,6,注意这种写法只适应于list,不适应于vector,因为vector没有remove_if方法 b.erase(remove_if(b.begin(),b.end(),Pred()),b.end()); //vector中删除3,4 for(vector<int>::iterator it=d.begin();it!=d.end();){ if(*it>=3&&*it<=4){ it=d.erase(it); }else{ it++; } } ostream_iterator<int> os(cout," "); copy(b.begin(),b.end(),os); cout<<endl; copy(d.begin(),d.end(),os); cout<<endl; //map中删除5,6 for(map<int,int>::iterator it=c.begin();it!=c.end();){ if((*it).first>=5&&(*it).first<=6){ c.erase(it++); } else{ it++; } } for_each(c.begin(),c.end(),f);}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询