std::reverse_iterator<Iter>::operator++,+,+=,--,-,-= - cppreference.com
来自cppreference.com
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,3) 递减底层迭代器。
2,4) 递增底层迭代器。
5) 返回一个 reverse_iterator,其底层迭代器前进 -n 个位置。
6) 返回一个 reverse_iterator,其底层迭代器前进 n 个位置。
7) 将底层迭代器前进 -n 个位置。
8) 将底层迭代器前进 n 个位置。
参数
返回值
1,2) *this
3,4) 在更改之前制作的 *this 的副本。
5) reverse_iterator(base() - n);
6) 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; }
输出: