|
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 past-the-end. 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 past-the-end. 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
|