Iterator
An iterator that can both read and write and can traverse a container in both directions
For a complete discussion of iterators, see the Iterators section of this reference.
Iterators are a generalization of pointers that allow a C++ program to uniformly interact with different data structures. Bidirectional iterators can move both forwards and backwards through a container, and have the ability to both read and write data. These iterators satisfy the requirements listed below.
The following key pertains to the iterator descriptions listed below:
a and b | values of type X |
n | value of distance type |
u, Distance, tmp and m | identifiers |
r | value of type X& |
t | value of type T |
A bidirectional iterator must meet all the requirements listed below. Note that most of these requirements are also the requirements for forward iterators.
X u | u might have a singular value |
X() | X() might be singular |
X(a) | copy constructor, a == X(a). |
X u(a) | copy constructor, u == a |
X u = a | assignment, u == a |
a == b, a != b | return value convertable to bool |
a->m | equivalent to (*a).m |
*a | return value convertable to T& |
++r | returns X& |
r++ | return value convertable to const X& |
*r++ | returns T& |
--r | returns X& |
r-- | return value convertable to const X& |
*r-- | returns T& |
Like forward iterators, bidirectional iterators have the condition that a == b implies *a== *b.
There are no restrictions on the number of passes an algorithm may make through the structure.