source:
downloads/boost_1_34_1/libs/iterator/doc/InteroperableIterator.rst
@
30
| Last change on this file since 30 was 29, checked in by landauf, 17 years ago | |
|---|---|
| File size: 4.7 KB | |
Interoperable Iterator Concept
A class or built-in type X that models Single Pass Iterator is interoperable with a class or built-in type Y that also models Single Pass Iterator if the following expressions are valid and respect the stated semantics. In the tables below, x is an object of type X, y is an object of type Y, Distance is iterator_traits<Y>::difference_type, and n represents a constant object of type Distance.
| Expression | Return Type | Assertion/Precondition/Postcondition |
|---|---|---|
| y = x | Y | post: y == x |
| Y(x) | Y | post: Y(x) == x |
| x == y | convertible to bool | == is an equivalence relation over its domain. |
| y == x | convertible to bool | == is an equivalence relation over its domain. |
| x != y | convertible to bool | bool(a==b) != bool(a!=b) over its domain. |
| y != x | convertible to bool | bool(a==b) != bool(a!=b) over its domain. |
If X and Y both model Random Access Traversal Iterator then the following additional requirements must be met.
| Expression | Return Type | Operational Semantics | Assertion/ Precondition |
|---|---|---|---|
| x < y | convertible to bool | y - x > 0 | < is a total ordering relation |
| y < x | convertible to bool | x - y > 0 | < is a total ordering relation |
| x > y | convertible to bool | y < x | > is a total ordering relation |
| y > x | convertible to bool | x < y | > is a total ordering relation |
| x >= y | convertible to bool | !(x < y) | |
| y >= x | convertible to bool | !(y < x) | |
| x <= y | convertible to bool | !(x > y) | |
| y <= x | convertible to bool | !(y > x) | |
| y - x | Distance | distance(Y(x),y) | pre: there exists a value n of Distance such that x + n == y. y == x + (y - x). |
| x - y | Distance | distance(y,Y(x)) | pre: there exists a value n of Distance such that y + n == x. x == y + (x - y). |
Note: See TracBrowser
for help on using the repository browser.










