Standard C++ Library
Copyright 1998, Rogue Wave Software, Inc.
- 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 struc-
tures. 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 require-
ments listed below.
KEY TO ITERATOR REQUIREMENTS
The following key pertains to the iterator descriptions
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
REQUIREMENTS FOR BIDIRECTIONAL ITERATORS
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 algo-
rithm may make through the structure.
Containers, Iterators, Forward_Iterators