C++ named requirements: BidirectionalIterator
A BidirectionalIterator is a ForwardIterator that can be moved in both directions (i.e. incremented and decremented).
It satisfies BidirectionalIterator if
- The type
b, iterators of type
reference,the type denoted by
The following expressions must be valid and have their specified effects
|a--||convertible to const It&||It temp = a;
A mutable BidirectionalIterator is a BidirectionalIterator that additionally satisfies the OutputIterator requirements.
The begin iterator is not decrementable and the behavior is undefined if --container.begin() is evaluated.
A bidirectional iterator does not have to be dereferenceable to be decrementable (in particular, the end iterator is not dereferenceable but is decrementable)
 See also
| specifies that a |