
ALINK="#ff0000">
Bidirectional Iterator


Category: iterators 
Component type: concept 
Description
A Bidirectional Iterator is an iterator that can be both incremented
and decremented. The requirement that a Bidirectional Iterator
can be decremented is the only thing that distinguishes
Bidirectional Iterators from Forward Iterators.
Refinement of
Forward Iterator
Associated types
The same as for Forward Iterator.
Notation
X

A type that is a model of Bidirectional Iterator

T

The value type of X

i, j

Object of type X

t

Object of type T

Definitions
Valid expressions
In addition to the expressions defined in Forward Iterator, the
following expressions must be valid.
Name

Expression

Type requirements

Return type

Predecrement

i


X&

Postdecrement

i


X

Expression Semantics
Semantics of an expression is defined only where it is not defined in
Forward Iterator.
Name

Expression

Precondition

Semantics

Postcondition

Predecrement

i

i is dereferenceable or pasttheend. There exists a
dereferenceable iterator j such that i == ++j.

i is modified to point to the previous element.

i is dereferenceable. &i = &i. If i == j, then
i == j. If j is dereferenceable and i == ++j,
then i == j.

Postdecrement

i

i is dereferenceable or pasttheend. There exists a
dereferenceable iterator j such that i == ++j.

Equivalent to
{
X tmp = i;
i;
return tmp;
}


Complexity guarantees
The complexity of operations on bidirectional iterators is
guaranteed to be amortized constant time.
Invariants
Symmetry of increment and decrement

If i is dereferenceable, then ++i; i; is a null operation.
Similarly, i; ++i; is a null operation.

Models
Notes
See also
Input Iterator, Output Iterator, Forward Iterator,
Random Access Iterator, Iterator overview
Copyright ©
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation
