Detailed Description
ConvertibleToRange denotes a sequence of the form: [begin, end). The elements of the range are the beginning element to the element before the end element. The following are examples of ranges:
- A container, denotes a range
[container.begin(), container.end())
- An array, denotes a range
[array[0], array[sizeof(array)/sizeof(array[0])])
- An std::pair of iterators denotes a range
[pair.first, pair.last)
- Refinement Of:
- Associated Types:
- Notation:
X | A type that is a model of ConvertibleToRange |
x | Object of type X |
I | A type for iterating over objects of type X |
p, q | Objects of type I |
- Definitions:
- Valid Iterator
p is a valid iterator in x if it is a valid (nonsingular) iterator that is reachable from adobe::begin(x).
- Valid Range
[p, q) is a valid range in x if p and q are valid iterators in x and if q is reachable from p.
- Valid Expressions:
- Expression Semantics:
- Complexity Guarantees:
- Invariants:
- Range Size
adobe::size(x) is equal to the distance from adobe::begin(x) to adobe::end(x).
- Completeness
- An algorithm that iterates through the range
[adobe::begin(x), adobe::end(x)) will pass through every element of x. [1]
- Notes:
- [1] The order in which the elements appear in any range is unspecified, even between two iterations where the range has had no intervening mutative operations.