反向迭代器的使用

對一個vector反向迭代器的使用例子:

  1. vector<int>::reverse_iterator r_iter;
  2. for (r_iter = vec.rbegin(); // binds r_iter to last element
  3. r_iter != vec.rend(); // rend refers 1 before 1st element
  4. ++r_iter) // decrements iterator one element
  5. cout << *r_iter << endl; // prints 9,8,7,...0

用在sort函數上,可以實現從大到小排序:

  1. // sorts vec in "normal" order
  2. sort(vec.begin(), vec.end());
  3. // sorts in reverse: puts smallest element at the end of vec
  4. sort(vec.rbegin(), vec.rend());

用在查找中,可以實現從後往前查找: 
一個字符串有很多個句子組成,句子用逗號隔開,現在查找最後一個句子

  1. // find last element in a comma-separated list
  2. string::reverse_iterator rcomma = find(line.rbegin(), line.rend(), ',');

現在將反向迭代器轉換成正向迭代器來實現正序輸出:

  1. // ok: get a forward iterator and read to end of line
  2. cout << string(rcomma.base(), line.end()) << endl;

使用的是reverse_iterator的base方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章