问题
将数组拷贝到一个vector和一个list中。使用单迭代器版本的erase从list中删除奇数元素,从vector中删除偶数元素.
注意:[删除元素的成员函数并不检查[要删除的元素]是否存在,因此删除之前必须保证其存在.]erase删除deque中除首尾位置之外的任何元素都会使所有迭代器,引用,指针失效。指向vector或string中删除点之后位置的迭代器、引用和指针都会失效。
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | /************************************************************************* > File Name: test.9.26.cpp > Author: puruidong > Mail: 1@w1520.com > Created Time: 2014年05月15日 ************************************************************************/ #include<iostream> #include<vector> #include<list> #include<iterator> using namespace std; //使用下面的数组,将数组拷贝到一个vector和一个list中.使用单迭代器版本的erase从list中删除奇数元素,从vector中删除偶数元素. int main() { int ia[] = {0,1,1,2,3,5,8,13,21,55,89}; size_t sizea = sizeof(ia)/sizeof(*ia); vector<int> vec(ia,ia+sizea); list<int> lis(ia,ia+sizea); for(vector<int>::iterator it=vec.begin();it!=vec.end();) {//从vector中删除偶数. if(*it%2==0) { it=vec.erase(it); }else { ++it; } } for(list<int>::iterator its=lis.begin();its!=lis.end();) {//从list中删除奇数元素. if(*its%2!=0) { its= lis.erase(its); }else { ++its; } } for(vector<int>::const_iterator itvec=vec.cbegin();itvec!=vec.cend();++itvec) {//只输出不更改. cout << "输出vector中的数据:" << *itvec << endl; } return 0; } |
更多信息可参考:erase的使用