stl 学习笔记14 Reverse Iterator

来源:互联网 发布:js编写计算器 编辑:程序博客网 时间:2024/05/16 02:14
//逆向迭代器,跟正向的迭代器一样是半开区间,但以相反的方向。////iter/reviter1.cpp//-rbegin -//-rend-#include <iostream>#include <list>#include <algorithm>using namespace std;void print(int elem){cout << elem <<' ';}int main(){list<int>coll;for(int i = 1; i <= 9; ++i){coll.push_back(i);}for_each(coll.begin(),coll.end(),print);cout << endl;for_each(coll.rbegin(),coll.rend(),print);cout << endl;system("pause");return 0;}//reviter2.cpp//-//-iterator -----------pos//-reverse_iterator-----------pos//-#include <iostream>#include <vector>#include <algorithm>using namespace std;/*-helpinline void print(int elem){cout << elem << ' ';}*///-helpint main(){vector<int> coll;for(int i = 1;i <=9; ++i){coll.push_back(i);}/*for_each(coll.begin(),coll.end(),print);cout << endl;*/vector<int>::iterator pos;pos = find(coll.begin(),coll.end(),5);cout << "*pos:" << *pos << endl;vector<int>::reverse_iterator rpos(pos);cout << "*rpos: " << *rpos << endl; system("pause");return 0;}//reviter3//-注意看半开区间,两个都没有7 .//Output://-2 3 4 5 6//-6 5 4 3 2//-#include <iostream>#include <deque>#include <algorithm>using namespace std;inline void print(int elem){cout << elem << ' ';}int main(){deque<int> coll;for(int i = 1;i <= 9; ++i)coll.push_back(i);deque<int>::iterator pos1;pos1 = find(coll.begin(),coll.end(),2);deque<int>::iterator pos2;pos2 = find(coll.begin(),coll.end(),7);for_each(pos1,pos2,print);cout << endl;deque<int>::reverse_iterator rpos1(pos1);deque<int>::reverse_iterator rpos2(pos2);for_each(rpos2,rpos1,print);cout <<endl;//test//test failed //-ERROR: reverse_iterator 的打印也要注意顺序//for_each(rpos1,rpos2,print);//cout << endl;//testsystem("pause");return 0;}//reviter4//-////reverse_iterator::base()#include <iostream>#include <list>#include <algorithm>using namespace std;int main(){list<int> coll;for(int i = 1;i <=9; ++i){coll.push_back(i);}list<int>::iterator pos;pos =find(coll.begin(),coll.end(),5);cout << "pos: " << *pos << endl;list<int>::reverse_iterator rpos(pos);cout << "rpos: " <<*rpos << endl;list<int>::iterator rrpos =  rpos.base();cout << "rrpos: " << *rrpos << endl;system("pause");}