名稱空間
變體
操作

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

來自 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) --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
    // 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

[編輯] 參閱

前進迭代器
(函式模板) [編輯]
計算兩個迭代器介面卡之間的距離
(函式模板) [編輯]