C++ named requirements: LegacyBidirectionalIterator
A LegacyBidirectionalIterator is a LegacyForwardIterator that can be moved in both directions (i.e. incremented and decremented).
If a LegacyBidirectionalIterator it originates from a Container, then it's value_type is the same as the container's, so dereferencing (*it) obtains the container's value_type.
Requirements
The type It
satisfies LegacyBidirectionalIterator if
- The type
It
satisfies LegacyForwardIterator
And, given
-
a
andb
, iterators of typeIt
-
reference,
the type denoted bystd::iterator_traits<It>::reference
The following expressions must be valid and have their specified effects
Expression | Return | Equivalent expression | Notes |
---|---|---|---|
--a | It& | Preconditions:
Postconditions:
| |
a-- | convertible to const It& | It temp = a; --a; |
|
*a-- | reference |
A mutable LegacyBidirectionalIterator is a LegacyBidirectionalIterator that additionally satisfies the LegacyOutputIterator requirements.
Notes
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)
ConceptFor the definition of std::iterator_traits, the following exposition-only concept is defined.
where the exposition-only concept |
(since C++20) |
See also
(C++20) |
specifies that a forward_iterator is a bidirectional iterator, supporting movement backwards (concept) |
Iterator library | provides definitions for iterators, iterator traits, adaptors, and utility functions |