低调、勤奋。
分类: C/C++
2013-01-09 22:10:42
反向迭代器是一种反向遍历容器的迭代器。也就是,从最后一个元素到第一个元素遍历容器。反向迭代器将自增(和自减)的含义反过来了:对于反向迭代器,++ 运算将访问前一个元素,而 -- 运算则访问下一个元素。
// reverse iterator of vector from back to front
vector
for (r_iter = vec.rbegin(); r_iter != vec.rend(); ++r_iter) // decrements iterator one element
cout << *r_iter << endl; // prints 9,8,7,...0
//单词列表FIRST,MIDDLE,LAST
如果要输出列表中最后一个单词,可使用反向迭代器:
// find last element in a comma-separated list则将输出 TSAL!
使用反向迭代器时,以逆序从后向前处理 string 对象。为了得到正确的输出,必须将反向迭代器 line.rbegin() 和 rcomma 转换为从前向后移动的普通迭代器。其实没必要转换 line.rbegin(),因为我们知道转换的结果必定是 line.end()。只需调用所有反向迭代器类型都提供的成员函数 base 转换 rcomma 即可:
// ok: get a forward iterator and read to end of line
cout << string(rcomma.base(), line.end()) << endl;
三、const 迭代器
定义为const_iterator 类型。这样做是因为我们不希望使用这个迭代器来修改容器中的元素。
Table 11.3. Iterator Categories
表 11.3. 迭代器种类
|