赞
踩
- /*
- 假设有【任意定义】的数组 ia ,将 ia 复制到一个 vector 容器和一个 list 容器中。使用单个迭代器参数版本的 erase
- 函数将 list 容器中的奇数值元素删除掉,然后将vector 容器中的偶数值元素删除掉。
- */
- #include "iostream"
- #include "vector"
- #include "deque"
- #include "list"
-
- using namespace std;
-
- int main()
- {
- // 用于输入任意的元素保存在ia数组中。
- vector<int> ivsource;
- int iVal;
- while (cin>>iVal)
- {
- ivsource.push_back(iVal);
- }
- cin.clear();
-
- int * ia=new int[ivsource.size()];
- vector<int>::iterator iter=ivsource.begin();
- for (size_t i=0;i!=ivsource.size(),iter!=ivsource.end();++i,++iter)
- {
- *(ia+i)=*iter;
- }
- //把ia数组中的内容分别保存在vector和list中
- list<int> ilist(ia,ia+ivsource.size());
- vector<int> ivector(ia,ia+ivsource.size());
- //输出没有处理前的vector中的元素
- cout<<"输出没有处理前的vector中的元素"<<endl;
- for (vector<int>::iterator iter=ivector.begin();iter!=ivector.end();++iter)
- {
- cout<<*iter<<" ";
- }
- cout<<endl;
- //输出没有处理前的list中的元素
- cout<<"输出没有处理前的list中的元素"<<endl;
- for (list<int>::iterator iter=ilist.begin();iter!=ilist.end();++iter)
- {
- cout<<*iter<<" ";
- }
- //删除vector中的偶数元素
- for (vector<int>::iterator iter=ivector.begin();iter!=ivector.end();)
- {
- if (*iter%2==0)
- {
- iter=ivector.erase(iter);
- }
- else
- {
- ++iter;
- }
- }
- //输出处理后的vector中的元素
- cout<<"\n输出处理后的vector中的元素"<<endl;
- for (vector<int>::iterator iter=ivector.begin();iter!=ivector.end();++iter)
- {
- cout<<*iter<<" ";
- }
- cout<<endl;
-
-
- //删除list中的奇数元素
- for (list<int>::iterator iter=ilist.begin();iter!=ilist.end();)
- {
- if (*iter%2==1)
- {
- iter=ilist.erase(iter);
- /*
- 不要使用:iter=ilist.erase(iter);
- --iter;
- 然后在for循环的最后一个位置上使用++iter
- 因为返回的迭代器已经指向了被删除元素的下一个位置,所以我们没有必要再次的移动回来。然后在for循环中++iter
- */
- }
- else
- {
- ++iter;
- }
- }
- //输出处理后的list中的元素
- cout<<"输出处理后的list中的元素"<<endl;
- for (list<int>::iterator iter=ilist.begin();iter!=ilist.end();++iter)
- {
- cout<<*iter<<" ";
- }
- cout<<endl;
- return 0;
- }
- /*
- 假设有如下 ia 的定义,将 ia 复制到一个 vector 容器和一个 list 容器中。使用单个迭代器参数版本的 erase
- 函数将 list 容器中的奇数值元素删除掉,然后将vector 容器中的偶数值元素删除掉。
- int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 };
- */
- #include "iostream"
- #include "vector"
- #include "string"
- #include "list"
- #include "deque"
- #include "algorithm"
-
- using namespace std;
-
- int main()
- {
- int ia[]={0,1,1,2,3,5,8,13,21,55,89};
- int i=(sizeof(ia)/sizeof(*ia));
- vector<int> ivec(ia,ia+i);
- list<int> ilst(ia,ia+i);
-
- cout<<"删除元素之前的vector:"<<endl;
- for (vector<int>::iterator it=ivec.begin();it!=ivec.end();++it)
- {
- cout<<*it<<" ";
- }
- cout<<"\n删除元素之前的list"<<endl;
- for (list<int>::iterator it=ilst.begin();it!=ilst.end();++it)
- {
- cout<<*it<<" ";
- }
-
- for (vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
- {
- if (*iter%2==0)
- {
- iter=ivec.erase(iter);
- }
- }
-
- for (list<int>::iterator lit=ilst.begin();lit!=ilst.end();++lit)
- {
- if(*lit%2==1)
- {
- lit=ilst.erase(lit);
- --lit;
- }
- }
-
- cout<<"\n删除元素之后的vector:"<<endl;
- for (vector<int>::iterator it=ivec.begin();it!=ivec.end();++it)
- {
- cout<<*it<<" ";
- }
- cout<<"\n删除元素之后的list"<<endl;
- for (list<int>::iterator it=ilst.begin();it!=ilst.end();++it)
- {
- cout<<*it<<" ";
- }
- cout<<endl;
- return 0;
- }
- /*
- 编写程序将 int 型的 list 容器的所有元素复制到两个 deque 容器中。list 容器的元素如果为偶数,则复制到
- 一个 deque 容器中;如果为奇数,则复制到另一个 deque 容器里。
- 奇数odd 偶数 even
- pop_back()操作会擦除最后一个元素,但是不会返回这个数值。
- back()操作会返回最后一个元素,但是不会擦除这个数值。
- */
- #include "iostream"
- #include "vector"
- #include "string"
- #include "list"
- #include "deque"
- using namespace std;
-
- int main()
- {
- int popVal=0;
- list<int> listint;
- int i=0;
- while (i!=10)
- {
- listint.push_back(i);
- ++i;
- }
- deque<int> odd,even;
- while (!listint.empty())
- {
- popVal=listint.back();
- listint.pop_back();
- if (popVal%2==0)
- {
- even.push_back(popVal);
- }
- else
- {
- odd.push_back(popVal);
- }
- }
- while (!odd.empty())
- {
- cout<<odd.back()<<" ";
- odd.pop_back();
- }
- cout<<endl;
- while (!even.empty())
- {
- cout<<even.back()<<" ";
- even.pop_back();
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。