您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记30——反向迭代器

2015-11-28 19:23 204 查看

1,反向迭代器的概念

向后遍历序列的迭代器。这些迭代器颠倒了++和--的含义。
类型为: std::reverse_iterator
头文件:
#include <iterator>


容器操作也会提供反向迭代器rend和rbegin,其与end和begin的关系如下图所示:



rbegin指向最后一个元素;rend指向第一个元素前面的位置。

2,反向迭代器的成员函数

(constructor) 构造一个新的迭代器适配器
operator= 赋值
base accesses the underlying iterator 转换为正常迭代器,注意转换后指向的是下一位置的元素
operator* 解引用,获取指向的值
operator->
operator[] 通过下标获取元素
++, ++(int) advances or decrements the iterator
+=, +,
--, --(int),
-=, -

存疑:++与 ++(int) 有什么区别?



请注意base的位置发生了后移。

3,反向迭代器的用法

将反向迭代器赋值给find()函数,就变成了从后向前查找。
注意,当给find输入反向迭代器后,find返回的也是反向迭代器。
且不能直接将反向迭代器赋值给普通的迭代器。

如下示例为查找序列中最后一个为0的元素:
list<int> ilst = {520, 3132, 0, 3, 5, 9, 0, 8, 7};
list<int> ::reverse_iterator r_iter = find(ilst.rbegin(), ilst.rend(), 0);

for (list<int> ::iterator iter = --r_iter.base(); iter != ilst.end(); iter++)
{
cout << *iter << endl;
}
输出的是最后一个0到序列末尾的所有元素。

请注意base的位置发生了后移。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: