6.7 KiB
6.7 KiB
Random Access Traversal Concept
A class or built-in type X models the Random Access
Traversal concept if the following expressions are valid and
respect the stated semantics. In the table below, Distance
is iterator_traits<X>::difference_type and
n represents a constant object of type
Distance.
| Random Access Traversal Iterator Requirements (in addition to Bidirectional Traversal) | |||
|---|---|---|---|
| Expression | Return Type | Operational Semantics | Assertion/ Precondition |
r += n |
X& |
|
|
a + n, n + a |
X |
{ X tmp = a; return tmp += n; } |
|
r -= n |
X& |
return r += -n |
|
a - n |
X |
{ X tmp = a; return tmp -= n; } |
|
b - a |
Distance |
a < b ? distance(a,b) : -distance(b,a) |
pre: there exists a value n of Distance
such that a + n == b. b == a + (b - a). |
a[n] |
convertible to T | *(a + n) |
pre: a is a Readable Iterator |
a[n] = v |
convertible to T | *(a + n) = v |
pre: a is a Writable iterator |
a < b |
convertible to bool |
b - a > 0 |
< is a total ordering relation |
a > b |
convertible to bool |
b < a |
> is a total ordering relation |
a >= b |
convertible to bool |
!(a < b) |
|
a <= b |
convertible to bool |
!(a > b) |
|
iterator_traversal<X>::type |
Convertible to random_access_traversal_tag |
||