std::reverse_iterator
Defined in header
<iterator>
|
||
template< class Iterator >
class reverse_iterator : public std::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; 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 |
iterator_type
|
Iterator
|
difference_type
|
std::iterator_traits<Iterator>::difference_type |
pointer
|
std::iterator_traits<Iterator>::pointer |
reference
|
std::iterator_traits<Iterator>::reference |
[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) |
|
obtains rvalue reference to indexed element (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 |
In addition to the current value of the underlying iterator, a typical implementation of std::reverse_iterator
holds a decremented copy of the underlying iterator, which is used in dereferencing.
[edit] Non-member functions
compares the underlying iterators (function template) |
|
advances the iterator (function template) |
|
computes the distance between two iterator adaptors (function template) |
Inherited from std::iterator
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 |
[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) |