Library: Iterators
An iterator that can both read and write and can traverse a container in both directions
NOTE -- 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 representing a distance between two iterators |
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 |
r = a |
assignment, r == a |
a == b, a != b |
return value convertible to bool |
a->m |
equivalent to (*a).m |
*a |
return value convertible to T& |
++r |
returns X& |
r++ |
return value convertible to const X& |
*r++ |
returns T& |
--r |
returns X& |
r-- |
return value convertible 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.
Containers, Iterators, Forward Iterators
ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 24.1.4