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)
 
 
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) << ' '; // 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

参阅

令迭代器前进
(函数模板)
计算两个迭代器适配器间的距离
(函数模板)