|  |  |  | 
| Category: containers |  | Component type: concept | 
Description
A Random Access Container is a ReversibleContainer whose iterator type is a RandomAccessIterator. It provides amortized constant time access to arbitrary elements. 
Refinement of
ReversibleContainer 
Associated types
No additional types beyond those defined in ReversibleContainer. However, the requirements for the iterator type are strengthened: it must be a RandomAccessIterator. 
Notation
| X | A type that is a model of Random Access Container | 
| a,b | Object of type X | 
| T | The value type of X | 
Definitions
Valid expressions
In addition to the expressions defined in ReversibleContainer, the following expressions must be valid. 
| Name | Expression | Type requirements | Return type | 
| Element access | a[n] | nis convertible tosize_type | referenceifais mutable,const_referenceotherwise | 
Expression semantics
Semantics of an expression is defined only where it is not defined in ReversibleContainer, or where there is additional information. 
| Name | Expression | Precondition | Semantics | Postcondition | 
| Element access | a[n] | 0 <= n < a.size() | Returns the nth element from the beginning of the container. |  | 
Complexity guarantees
The run-time complexity of element access is amortized constant time. 
Invariants
| Element access | The element returned by a[n]is the same as the one obtained by incrementinga.begin()ntimes and then dereferencing the resulting iterator. | 
Models
Notes
See also
The Iterators, RandomAccessIterator, Sequence