| Front Page / Iterators / Concepts / Bidirectional Iterator | 
A Bidirectional Iterator is a Forward Iterator that provides a way to obtain an iterator to the previous element in a sequence.
In addition to the requirements defined in Forward Iterator, the following requirements must be met.
| Expression | Type | Complexity | 
|---|---|---|
| next<i>::type | Bidirectional Iterator | Amortized constant time | 
| prior<i>::type | Bidirectional Iterator | Amortized constant time | 
| i::category | Integral Constant, convertible to bidirectional_iterator_tag | Constant time | 
typedef prior<i>::type j;
| Precondition: | i is decrementable | 
|---|---|
| Semantics: | j is an iterator pointing to the previous element of the sequence | 
| Postcondition: | j is dereferenceable and incrementable | 
For any bidirectional iterators i and j the following invariants always hold: