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.