命名空间
变体
操作

std::reverse_iterator<Iter>::operator++,+,+=,--,-,-=

来自 cppreference.com
 
 
迭代器库
迭代器概念
迭代器原语
算法概念和实用程序
间接可调用概念
常见算法要求
(C++20)
(C++20)
(C++20)
实用程序
(C++20)
迭代器适配器
范围访问
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
(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
    // The following statements raise compilation error because the
    // underlying iterator does not model the random access iterator:
//  *(rl + 3) = 13;
//  rl += 3;
//  rl -= 3;
}

输出

3 4 1 1 4
7 8

[编辑] 另请参阅

向前移动迭代器
(函数模板) [编辑]
计算两个迭代器适配器之间的距离
(函数模板) [编辑]