Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Random Access Sequence

Description

A Random Access Sequence is a Bidirectional Sequence whose iterators model Random Access Iterator. It guarantees constant time access to arbitrary sequence elements.

Refinement of

Bidirectional Sequence

Notation

s
A Random Access Sequence
S
A Random Access Sequence type
N
An integral constant
o
An arbitrary object
e
A Sequence element
Valid Expressions

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
Result Type Expressions
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

note 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>.

Expression Semantics

The semantics of an expression are defined only where they differ from, or are not defined in Bidirectional Sequence.

Expression Semantics
at<N>(s) The Nth element from the beginning of the sequence; see at.
Models
Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias Schwinger

PrevUpHomeNext