# random_access_iterator<T, Distance>

Category: iterators | Component type: type

### Description

`Random_access_iterator` is an iterator base class: it is intended that an iterator that is a model of Random Access Iterator, and whose value type and distance type are `T` and `Distance`, may be defined by inheriting from `random_access_iterator<T, Distance>` [1]. `Random_access_iterator` is entirely empty: it has no member functions, member variables, or nested types. It exists solely to simplify the definition of the functions `iterator_category`, `distance_type`, and `value_type`.

### Example

    class my_random_access_iterator : public random_access_iterator<double>
    {
      ...
    };

This declares `my_random_access_iterator` to be a Random Access Iterator whose value type is `double` and whose distance type is `ptrdiff_t`. If `Iter` is an object of class `my_random_access_iterator`, then `iterator_category(Iter)` will return `random_access_iterator_tag()`, `value_type(Iter)` will return `(double*) 0`, and `distance_type(Iter)` will return `(ptrdiff_t*) 0`.

### Definition

Defined in the standard header iterator, and in the nonstandard backward-compatibility header iterator.h. This class is no longer part of the C++ standard, although it was present in early drafts of the standard. It is retained in this implementation for backward compatibility.

### Template parameters

Parameter | Description | Default
--- | --- | ---
`T` | The iterator's value type |
`Distance` | The iterator's distance type | `ptrdiff_t`

### Model of

Assignable

### Public base classes

None

### Type requirements

The distance type must be a signed integral type.

### Public base classes

None.

### Members

None.

### New Members

None.

### Notes

[1] It is not required that a Random Access Iterator inherit from the base `random_access_iterator`. It is, however, required that the functions `iterator_category`, `distance_type`, and `value_type` be defined for every Random Access Iterator. (Or, if you are using the `iterator_traits` mechanism, that `iterator_traits` is properly specialized for every Random Access Iterator.) Since those functions are defined for the base `random_access_iterator`, the easiest way to ensure that are defined for a new type is to derive that class from `random_access_iterator` and rely on the derived-to-base standard conversion of function arguments.

### See also

The Iterator Tags overview, `iterator_traits`, `iterator_category`, `value_type`, `distance_type`, `input_iterator`, `output_iterator`, `forward_iterator`, `bidirectional_iterator`

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation