删除掉vector容器中的偶数值,List容器中的奇数值。程序编译通过,运行报错,提示vector iterator not incrementable
求分析原因
#include "stdafx.h" #include <iostream> #include <string> #include <list> #include <vector> using namespace std; int main() { int ia[]={0,1,1,2,3,5,8,13,21,55,89}; size_t word_size=sizeof(ia)/sizeof(int); vector<int> ivec(ia,ia+word_size); list<int> ilist(ia,ia+word_size); for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++) { if(*iter%2==0) ivec.erase(iter); } for(list<int>::iterator iter2=ilist.begin();iter2!=ilist.end();iter2++) { if(*iter2%2!=0) ilist.erase(iter2); } return 0; }
iter=xxx.erase(iter)
else
iter++
对于vector,rbegin倒删可以减少移动内存的开销.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。