std::reverse_iterator
定义于头文件 <iterator>
|
||
template< class Iterator > class reverse_iterator : public std::iterator< |
(C++17 前) | |
template< class Iterator > class reverse_iterator; |
(C++17 起) | |
std::reverse_iterator
是一个反转给定迭代器方向的迭代器适配器。换言之,提供双向迭代器时, std::reverse_iterator
产生一个新的迭代器,它从底层的双向迭代器所定义的序列的末尾移动到开端。
对于从迭代器 i
构造的 r
逆向迭代器,关系 &*r == &*(i-1) 始终为 true (只要 r
可解引用);从而构造自末尾后一位置的迭代器的逆向迭代器解引用到序列的最后元素。
这是标准库容器的成员函数 rbegin()
及 rend()
所返回的迭代器。
目录 |
[编辑] 成员类型
成员类型 | 定义 |
value_type
|
std::iterator_traits<Iterator>::value_type |
difference_type
|
std::iterator_traits<Iterator>::difference_type |
pointer
|
std::iterator_traits<Iterator>::pointer |
reference
|
std::iterator_traits<Iterator>::reference |
iterator_category
|
std::iterator_traits<Iterator>::iterator_category |
要求通过从 std::iterator< std::iterator_traits<Iterator>::iterator_category |
(C++17 前) |
成员类型 | 定义 |
iterator_type
|
Iterator
|
[编辑] 成员函数
构造新的迭代器适配器 (公开成员函数) | |
赋值另一迭代器 (公开成员函数) | |
访问底层迭代器 (公开成员函数) | |
访问指向的元素 (公开成员函数) | |
按索引访问元素 (公开成员函数) | |
推进或回退迭代器 (公开成员函数) |
[编辑] 成员对象
成员名称 | 定义 |
current (受保护成员对象)
|
base() 迭代器的副本 |
[编辑] 非成员函数
比较底层迭代器 (函数模板) | |
令迭代器前进 (函数模板) | |
计算二个迭代器适配器间的距离 (函数模板) |
[编辑] 注意
std::reverse_iterator
不可作用于返回到成员对象引用的迭代器(此之谓“隐匿迭代器”)。隐匿迭代器的一个例子是 std::filesystem::path::iterator 。
[编辑] 示例
#include <iostream> #include <string> #include <iterator> int main() { std::string s = "Hello, world"; std::reverse_iterator<std::string::iterator> r = s.rbegin(); r[7] = 'O'; // 以 'O' 替换 'o' r += 7; // 迭代器现在指向 'O' std::string rev(r, s.rend()); std::cout << rev << '\n'; }
输出:
OlleH
[编辑] 参阅
(C++17 中弃用) |
简化简单迭代器所要求类型定义的基类 (类模板) |