public member function
<iterator>

std::reverse_iterator::operator--

reverse_iterator& operator--();reverse_iterator  operator--(int);
Decrease iterator position
Decreases the reverse_iterator by one position.

Internally, the pre-decrement version (1) increments the base iterator kept by the object (as if applying operator++ to it).

The post-decrement version (2) is implemented with a behavior equivalent to:
1
2
3
4
5
reverse_iterator operator--(int) {
  reverse_iterator temp = *this;
  --(*this);
  return temp;
}

Parameters

none (the second version overloads the post-decrement operator).

Return value

The pre-decrement version (1) returns *this.
The post-decrement version (2) returns the value *this had before the call.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// reverse_iterator::operator-- example
#include <iostream>     // std::cout
#include <iterator>     // std::reverse_iterator
#include <vector>       // std::vector

int main () {
  std::vector<int> myvector;
  for (int i=0; i<10; i++) myvector.push_back(i);

  typedef std::vector<int>::iterator iter_type;

  std::reverse_iterator<iter_type> rev_begin (myvector.end());
  std::reverse_iterator<iter_type> rev_end (myvector.begin());

  std::reverse_iterator<iter_type> rev_iterator = rev_begin;
  while ( rev_iterator != rev_end )
    std::cout << *rev_iterator++ << ' ';
  std::cout << '\n';

  while ( rev_iterator != rev_begin )
    std::cout << *(--rev_iterator) << ' ';
  std::cout << '\n';

  return 0;
}

Output:

9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9


Data races

Modifies the object.
The iterator returned can be used to access or modify pointed elements.

Exception safety

Provides the same level of guarantee as increasing (and copying, for (2)) the base iterator.

See also