Files
cppdraft_translate/cppdraft/bidirectional/iterators.md
2025-10-25 03:02:53 +03:00

2.2 KiB

[bidirectional.iterators]

24 Iterators library [iterators]

24.3 Iterator requirements [iterator.requirements]

24.3.5 C++17 iterator requirements [iterator.cpp17]

24.3.5.6 Bidirectional iterators [bidirectional.iterators]

1

#

A class or pointer typeX meets the requirements of a bidirectional iterator if, in addition to meeting the Cpp17ForwardIterator requirements, the following expressions are valid as shown in Table 82.

Table 82Cpp17BidirectionalIterator requirements (in addition to Cpp17ForwardIterator) [tab:bidirectionaliterator]

🔗
Expression
Return type Operational Assertion/note
🔗 semantics pre-/post-condition
🔗
--r
X& Preconditions: there exists s such that r == ++s.
Postconditions: r is dereferenceable.
--(++r) == r.
--r == --s implies r == s.
addressof(r) == addressof(--r).
🔗
r--
convertible to const X& { X tmp = r; --r; return tmp; }
🔗
*r--
reference

2

#

[Note 1:

Bidirectional iterators allow algorithms to move iterators backward as well as forward.

— end note]