Whole document tree
Bidirectional Iterator
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