C++ Primer复习和学习笔记 第九章 顺序容器
2015-01-05 15:18
477 查看
/* 假设有【任意定义】的数组 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; }
相关文章推荐
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的定义
- 顺序容器 - 3【C++ Primer 学习笔记 - 第九章】
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:迭代器和迭代器范围
- c++ Primer 学习笔记 第九章----顺序容器
- c++ primer(第五版)学习笔记及习题答案代码版(第九章)顺序容器
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:顺序容器的操作
- 【C++ Primer】【学习笔记】【第九章】顺序容器之:vector容器的自增长
- 顺序容器 - 1【C++ Primer 学习笔记 - 第九章】
- 顺序容器 - 2【C++ Primer 学习笔记 - 第九章】
- c++ primer(第五版)笔记 第九章 顺序容器(2)
- C++ primer第二次阅读学习笔记(第9章: 顺序容器)
- c++ primer(第五版)笔记 第九章 顺序容器(3)
- C++ Primer 第9章 顺序容器 第一次学习笔记
- c++ primer(第五版)笔记 第九章 顺序容器(4)
- c++primer学习笔记 ( 第九章 顺序容器)
- C++ Primer 学习笔记_29_STL实践与分析(3) --顺序容器的操作(下)
- 【C++ Primer 学习笔记】: 容器和算法之【顺序容器】
- 【C++ Primer 学习笔记】chapter9 顺序容器
- 《c++ primer》 第9章 顺序容器 学习笔记
- C++ Primer 学习笔记——第9章:顺序容器