◐ Shell
clean mode source ↗

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;
}

输出:

参阅