先看一段代碼:
1 #include <iostream> 2 #include <deque> 3 #include <algorithm> 4 #include <iterator> 5 using namespace std; 6 7 void print(int elem) 8 { 9 cout << elem << ' '; 10 } 11 12 int main() 13 { 14 deque<int> coll; 15 16 for(int i = 1; i <= 9; ++i) 17 { 18 coll.push_back(i); 19 } 20 21 deque<int>::iterator pos1; 22 pos1 = find(coll.begin(), coll.end(), 2); 23 24 deque<int>::iterator pos2; 25 pos2 = find(coll.begin(), coll.end(), 7); 26 27 for_each(pos1, pos2, print); 28 cout << endl; 29 30 deque<int>::reverse_iterator rpos1(pos1); 31 deque<int>::reverse_iterator rpos2(pos2); 32 33 for_each(rpos2, rpos1, print); 34 cout << endl; 35 36 return 0; 37 }
代碼首先在一個deque中插入1到9,然后查找元素值為2和7的位置,分別賦值給迭代器pos1和pos2,然后輸出,由於STL中的操作總是左開右閉的區間,即[2,7),所以輸出2 3 4 5 6,7不會輸出。
接下來將迭代器轉換成逆向迭代器,再次輸出,對於反向迭代器,由於是反向,所以按邏輯來說它是左開右閉的(這里我嘗試了rpos2為iterator.end(),rpos1為iterator.begin(),此時輸出全部),即(7,2](事實上還是左閉右開,只不過此時的左和iterator順序一樣)。所以輸出6 5 4 3 2,下面的圖片解釋的很清楚。
轉載請注明出處:http://www.cnblogs.com/fnlingnzb-learner/p/6097947.html