std::reverse_iterator
| Defined in header  <iterator> | ||
| template< class Iterator > class reverse_iterator : public std::iterator< | (until C++17) | |
| template< class Iterator > class reverse_iterator; | (since C++17) | |
std::reverse_iterator is an iterator adaptor that reverses the direction of a given iterator.  In other words, when provided with a bidirectional iterator, std::reverse_iterator produces a new iterator that moves from the end to the beginning of the sequence defined by the underlying bidirectional iterator.
For a reverse iterator r constructed from an iterator i, the relationship &*r == &*(i-1) is always true (as long as r is dereferenceable); thus a reverse iterator constructed from a one-past-the-end iterator dereferences to the last element in a sequence. 
This is the iterator returned by member functions rbegin() and rend() of the standard library containers.
| Contents | 
[edit] Member types
| Member type | Definition | 
| value_type | std::iterator_traits<Iterator>::value_type | 
| difference_type | std::iterator_traits<Iterator>::difference_type | 
| pointer | std::iterator_traits<Iterator>::pointer | 
| reference | std::iterator_traits<Iterator>::reference | 
| iterator_category | std::iterator_traits<Iterator>::iterator_category | 
Note: before C++17, these member types are required to be obtained by inheriting from std::iterator< std::iterator_traits<Iterator>::iterator_category
, std::iterator_traits<Iterator>::value_type
, std::iterator_traits<Iterator>::difference_type
, std::iterator_traits<Iterator>::pointer
, std::iterator_traits<Iterator>::reference
>.
| Member type | Definition | 
| iterator_type | Iterator | 
[edit] Member functions
| constructs a new iterator adaptor (public member function) | |
| assigns another iterator (public member function) | |
| accesses the underlying iterator (public member function) | |
| accesses the pointed-to element (public member function) | |
| accesses an element by index (public member function) | |
| advances or decrements the iterator (public member function) | 
[edit] Member objects
| Member name | Definition | 
| current(protected) | a copy of the base() iterator | 
[edit] Non-member functions
| compares the underlying iterators (function template) | |
| advances the iterator (function template) | |
| computes the distance between two iterator adaptors (function template) | 
[edit] Example
#include <iostream> #include <string> #include <iterator> int main() { std::string s = "Hello, world"; std::reverse_iterator<std::string::iterator> r = s.rbegin(); r[7] = 'O'; // replaces 'o' with 'O' r += 7; // iterator now points at 'O' std::string rev(r, s.rend()); std::cout << rev << '\n'; }
Output:
OlleH
[edit] See also
| the basic iterator (class template) | 


