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