std::reverse_iterator<Iter>::operator++,+,+=,--,-,-=
来自cppreference.com
< cpp | iterator | reverse iterator
reverse_iterator& operator++(); | (1) | (C++17 起为 constexpr ) |
reverse_iterator& operator--(); | (2) | (C++17 起为 constexpr ) |
reverse_iterator operator++(int); | (3) | (C++17 起为 constexpr ) |
reverse_iterator operator--(int); | (4) | (C++17 起为 constexpr ) |
reverse_iterator operator+( difference_type n )const; | (5) | (C++17 起为 constexpr ) |
reverse_iterator operator-( difference_type n )const; | (6) | (C++17 起为 constexpr ) |
reverse_iterator& operator+=( difference_type n ); | (7) | (C++17 起为 constexpr ) |
reverse_iterator& operator-=( difference_type n ); | (8) | (C++17 起为 constexpr ) |
反向自增或自减底层迭代器。
重载 | 等价于 |
---|---|
(1) | --current ;return*this; |
(2) | ++current ;return*this; |
(3) | reverse_iterator tmp =*this;--current ;return tmp; |
(4) | reverse_iterator tmp =*this;++current ;return tmp; |
(5) | return reverse_iterator(current - n); |
(6) | return reverse_iterator(current + n); |
(7) | current -= n;return*this; |
(8) | current += n;return*this; |
目录 |
[编辑]参数
n | - | 相对于当前位置的位置 |
[编辑]返回值
如上所述。
[编辑]示例
运行此代码
#include <iostream>#include <iterator>#include <list>#include <vector> int main(){std::vector v{0, 1, 2, 3, 4};auto rv =std::reverse_iterator{v.rbegin()};std::cout<<*(++rv)<<' ';// 3std::cout<<*(--rv)<<' ';// 4std::cout<<*(rv +3)<<' ';// 1 rv +=3;std::cout<< rv[0]<<' ';// 1 rv -=3;std::cout<< rv[0]<<'\n';// 4 std::list l{5, 6, 7, 8};auto rl =std::reverse_iterator{l.rbegin()};std::cout<<*(++rl)<<' ';// OK:3std::cout<<*(--rl)<<'\n';// OK:4// 以下语句会产生编译错误,因为底层迭代器未实现随机访问迭代器:// *(rl + 3) = 13;// rl += 3;// rl -= 3;}
输出:
3 4 1 1 4 7 8
[编辑]参阅
令迭代器前进 (函数模板) | |
计算两个迭代器适配器间的距离 (函数模板) |