![]() |
Home | Libraries | People | FAQ | More |
A Random Access Sequence is a Bidirectional Sequence whose iterators model Random Access Iterator. It guarantees constant time access to arbitrary sequence elements.
Notation
In addition to the requirements defined in Bidirectional Sequence, for any Random Access Sequence the following must be met:
Expression | Return type | Type Requirements | Runtime Complexity |
---|---|---|---|
begin(s) | Random Access Iterator | Constant | |
end(s) | Random Access Iterator | Constant | |
at<N>(s) | Any type | Constant | |
at<N>(s) = o | Any type | s is mutable and e = o, where e is the first element in the sequence, is a valid expression. | Constant |
Expression | Compile Time Complexity |
---|---|
result_of::begin<S>::type | Amortized constant time |
result_of::end<S>::type | Amortized constant time |
result_of::at<S, N>::type | Amortized constant time |
result_of::value_at<S, N>::type | Amortized constant time |
result_of::at<S, N> returns the actual type returned by
at<N>(s). In
most cases, this is a reference. Hence, there is no way to know the exact
element type using result_of::at<S, N>.The element at N
may actually be a reference to begin with. For this purpose, you can use
result_of::value_at<S, N>.
The semantics of an expression are defined only where they differ from, or are not defined in Bidirectional Sequence.
Copyright © 2001-2005 Joel de Guzman, Dan Marsden |