最終更新日時: 2024年07月01日 22時15分19秒 (JST)
suomesta が更新

履歴 編集

function template
<iterator>

# std::operator+ (非メンバ関数)

    namespace std {
      template <class Iterator>
      reverse_iterator<Iterator> operator+(
        typename reverse_iterator<Iterator>::difference_type n,
        const reverse_iterator<Iterator>& x);                   // C++03

      template <class Iterator>
      constexpr reverse_iterator<Iterator> operator+(
        typename reverse_iterator<Iterator>::difference_type n,
        const reverse_iterator<Iterator>& x);                   // C++17
    }

## 概要

イテレータを`n`回進める。

`reverse_iterator`は逆方向に進める。

## 戻り値

`reverse_iterator<Iterator>(x.current - n)`

## 例

    #include <iostream>
    #include <vector>
    #include <iterator>

    int main()
    {
      std::vector<int> v = {1, 2, 3};

      std::reverse_iterator<decltype(v)::iterator> it1(v.end());
      std::reverse_iterator<decltype(v)::iterator> it2 = 1 + it1; // イテレータを1回進める

      std::cout << *it2 << std::endl;
    }

### 出力

    2

## 参照

- P0031R0 A Proposal to Add Constexpr Modifiers to `reverse_iterator`, `move_iterator`, `array` and Range Access