std::reverse_iterator<Iter>::operator++,+,+=,--,-,-=
来自cppreference.com
< cpp | iterator | reverse iterator
(1) | ||
reverse_iterator& operator++(); |
(C++17 前) | |
constexpr reverse_iterator& operator++(); |
(C++17 起) | |
(2) | ||
reverse_iterator& operator--(); |
(C++17 前) | |
constexpr reverse_iterator& operator--(); |
(C++17 起) | |
(3) | ||
reverse_iterator operator++( int ); |
(C++17 前) | |
constexpr reverse_iterator operator++( int ); |
(C++17 起) | |
(4) | ||
reverse_iterator operator--( int ); |
(C++17 前) | |
constexpr reverse_iterator operator--( int ); |
(C++17 起) | |
(5) | ||
reverse_iterator operator+( difference_type n ) const; |
(C++17 前) | |
constexpr reverse_iterator operator+( difference_type n ) const; |
(C++17 起) | |
(6) | ||
reverse_iterator operator-( difference_type n ) const; |
(C++17 前) | |
constexpr reverse_iterator operator-( difference_type n ) const; |
(C++17 起) | |
(7) | ||
reverse_iterator& operator+=( difference_type n ); |
(C++17 前) | |
constexpr reverse_iterator& operator+=( difference_type n ); |
(C++17 起) | |
(8) | ||
reverse_iterator& operator-=( difference_type n ); |
(C++17 前) | |
constexpr reverse_iterator& operator-=( difference_type n ); |
(C++17 起) | |
自增或自减迭代器。应用逆运算到底层迭代器,因为逆序。
1,2) 分别前自增或前自减一。
3,4) 分别后自增或后自减一。
5,6) 分别返回前进 n 或 -n 个位置的迭代器。
7,8) 分别令迭代器前进 n 或 -n 个位置。
参数
n | - | 相对于当前位置的位置 |
返回值
1,2) *this
3,4) *this 修改前的副本。
5,6) 分别为 reverse_iterator(base()-n) 或 reverse_iterator(base()+n)。
7,8) *this
示例
运行此代码
#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) << ' '; // 3 std::cout << *(--rv) << ' '; // 4 std::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: 3 std::cout << *(--rl) << '\n'; // OK: 4 // 由于底层迭代器并未实现随机访问迭代器,下列语句会引发编译错误: // *(rl + 3) = 13; // rl += 3; // rl -= 3; }
输出:
3 4 1 1 4 7 8
参阅
令迭代器前进 (函数模板) | |
计算两个迭代器适配器间的距离 (函数模板) |