| Home | Libraries | People | FAQ | More

#### Random Access Iterator

##### Description

A Random Access Iterator traverses a Sequence moving in either direction, permitting efficient arbitrary distance movements back and forward through the sequence.

Notation

`i`, `j`

  Random Access Iterators

`I`, `J`

  Random Access Iterator types

`M`

  An MPL integral constant

`N`

  An integral constant

##### Refinement of

Bidirectional Iterator

##### Expression requirements

In addition to the requirements defined in Bidirectional Iterator, the following expressions must be valid:

Expression | Return type | Runtime Complexity
--- | --- | ---
``next`(i)` | Random Access Iterator | Constant
``prior`(i)` | Random Access Iterator | Constant
``advance_c`<N>(i)` | Random Access Iterator | Constant
``advance`<M>(i)` | Random Access Iterator | Constant

##### Meta Expressions

Expression | Compile Time Complexity
--- | ---
``result_of::advance_c`<I, N>::type` | Amortized constant time
``result_of::advance`<I, M>::type` | Amortized constant time
``result_of::distance`<I ,J>::type` | Amortized constant time

##### Models

- `vector` iterator
- `std::pair` iterator
- `boost::array` iterator
- `iterator_range` iterator (where adapted sequence is a Random Access Sequence)
- `transform_view` iterator (where adapted sequence is a Random Access Sequence)
- `reverse_view` iterator (where adapted sequence is a Random Access Sequence)