简单的容器问题(C++)
假设有如下ia的定义,将ia复制到一个vector容器和一个list容器中。使用单个迭代器参数版本的erase函数将list容器中的奇数值元素删除掉,然后将vector容器中的偶数值元素删除掉。
我的代码如下:
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main()
{
int ia[]={1,2,3,4,5,6,7,8,9,0};
vector<int> a;
list<int> b;
for(size_t i=0;i!=ia.size();i++)//我若这么写:for(int i=0;i!=10;i++)虽然能编译通过,但不是让人很容易理解?
a.push_back(ia[i]);
for(i=0;i!=ia.size();i++)//
b.push_back(ia[i]);
for(vector<int>::iterator iter1=a.begin();iter1!= a.end();iter1++)
if((*iter1)%2==0)
a.erase(iter1);
for(list<int>::iterator iter2=b.begin();iter2!= b.end();iter2++)
if((*iter2)%2!=0)
b.erase(iter2);
for(iter1=a.begin();iter1!= a.end();iter1++)
cout << (*iter1) << " ";
for (iter2=b.begin();iter2!= b.end();iter2++)
cout << (*iter2) << " ";
return 0;;
}
当我把代码中的ia.size()改为10的时候,程序会崩溃~ 我估计数组复制那边可能有问题,麻烦前辈帮忙看下,小弟不胜感激~~
[解决办法]