std::reverse_iterator (3) - Linux Manuals
std::reverse_iterator: std::reverse_iterator
NAME
std::reverse_iterator - std::reverse_iterator
Synopsis
Defined in header <iterator>
template< class Iter >
class reverse_iterator : public std::iterator<
typename std::iterator_traits<Iter>::iterator_category,
typename std::iterator_traits<Iter>::value_type, (until C++17)
typename std::iterator_traits<Iter>::difference_type,
typename std::iterator_traits<Iter>::pointer,
typename std::iterator_traits<Iter>::reference >
template< class Iter > (since C++17)
class reverse_iterator;
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.
range-rbegin-rend.svg
Member types
Member type Definition
value_type std::iterator_traits<Iter>::value_type
difference_type std::iterator_traits<Iter>::difference_type
pointer std::iterator_traits<Iter>::pointer
reference std::iterator_traits<Iter>::reference
iterator_category std::iterator_traits<Iter>::iterator_category
These member types are required to be obtained by inheriting from std::iterator< std::iterator_traits<Iter>::iterator_category
, std::iterator_traits<Iter>::value_type
, std::iterator_traits<Iter>::difference_type (until C++17)
, std::iterator_traits<Iter>::pointer
, std::iterator_traits<Iter>::reference
>.
Member type Definition
iterator_type Iter
Member functions
constructor (public member function)
operator= (public member function)
base (public member function)
operator* (public member function)
operator->
operator[] (public member function)
operator++
operator++(int)
operator+= advances or decrements the iterator
operator+ (public member function)
operator--
operator--(int)
operator-=
operator-
Member objects
Member name Definition
current (protected) a copy of the base() iterator
Non-member functions
make_reverse_iterator creates a std::reverse_iterator of type inferred from the argument
(C++14)
operator==
operator!= compares the underlying iterators
operator< (function template)
operator<=
operator>
operator>=
operator+ (function template)
operator- (function template)
Notes
std::reverse_iterator does not work with iterators that return a reference to a member object (so-called "stashing iterators"). An example of stashing iterator is std::filesystem::path::iterator.
Example
// Run this code
Output:
See also
iterator base class to ease the definition of required types for simple iterators
(deprecated in C++17)