Concept BidirectionalIterator
BidirectionalIterator
Description
A bidirectional iterator is an iterator that can read through a sequence
of values. It can move in either direction through the sequence, and can
be either mutable (data pointed to by it can be changed) or not mutable.
An iterator represents a position in a sequence. Therefore, the
iterator can point into the sequence (returning a value when dereferenced
and being incrementable), or be off-the-end (and not dereferenceable or
incrementable).
Associated types
-
value_type
std::iterator_traits<Iter>::value_type
The value type of the iterator
-
category
std::iterator_traits<Iter>::iterator_category
The category of the iterator
Notation
- Iter
- A type playing the role of iterator-type in the BidirectionalIterator concept.
-
i
, j
- Objects of type Iter
x
- Object of type value_type
Type expressions
- Category tag
category must be
derived from std::bidirectional_iterator_tag.
Complexity
All iterator operations must take amortized constant time.
Invariants
- Predecrement must return object
&i = &(--i)
- Unique path through sequence
i == j
implies --i == --j
- Increment and decrement are inverses
++i; --i;
and --i; ++i;
must end up with the
value of i
unmodified, if i
both of the
operations in the pair are valid.
Models
- T *
- std::list<T>::iterator