[#BloombergLP-bslstl-RandomAccessIterator] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::RandomAccessIterator :relfileprefix: ../../ :mrdocs: STL‐compliant random‐access iterator adapted from a minimal implementation. == Synopsis Declared in `<bslstl_randomaccessiterator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class T, class ITER_IMP, class TAG_TYPE = std::random_access_iterator_tag> class RandomAccessIterator : public xref:BloombergLP/bslstl/BidirectionalIterator.adoc[BidirectionalIterator<T, ITER_IMP, TAG_TYPE>] ---- == Description Given an `ITER_IMP` type that implements a minimal subset of an iterator interface, this template generates a complete iterator that meets all of the requirements of a "random‐access iterator" in the C++ standard. If `T` is const‐qualified, then the resulting type is a const iterator. `T` shall not be a function, reference type or void. `ITER_IMP` must provide public operations so that, for objects `i` and `j` of type `ITER_IMP` and `n` of an integral type, the following operations are supported: ` ITER_IMP i; default construction ITER_IMP j(i); copy construction i = j assignment ++i increment to next element ‐‐i decrement to previous element i += n increment by n elements i ‐= n decrement by n elements j ‐ i // convertible to ptrdiff_t distance from i to j i == j // convertible to bool equality comparison i < j // convertible to bool less‐than comparison *i // reference convertible to T& element access (dereference) ` == Base Classes [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/bslstl/BidirectionalIterator.adoc[BidirectionalIterator<T, ITER_IMP, TAG_TYPE>]` | Adaptor that produces a standard bidirectional iterator from a core type. |=== == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/RandomAccessIterator/difference_type.adoc[`difference_type`] | Signed integer type measuring iterator distance. | xref:BloombergLP/bslstl/RandomAccessIterator/iterator_category.adoc[`iterator_category`] | Random‐access iterator category tag. | xref:BloombergLP/bslstl/RandomAccessIterator/pointer.adoc[`pointer`] | Pointer type for the iterator's value type. | xref:BloombergLP/bslstl/RandomAccessIterator/reference.adoc[`reference`] | Reference type for the iterator's value type. | xref:BloombergLP/bslstl/RandomAccessIterator/value_type.adoc[`value_type`] | Value type referred to by this iterator. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/RandomAccessIterator/2constructor-0be.adoc[`RandomAccessIterator`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bslstl/RandomAccessIterator/operator_assign-04.adoc[`operator=`] | Assignment operators | xref:BloombergLP/bslstl/ForwardIterator/imp-0e.adoc[`imp`] | `imp` overloads | xref:BloombergLP/bslstl/ForwardIterator/operator_star.adoc[`operator*`] | Return a reference to the current element. | xref:BloombergLP/bslstl/RandomAccessIterator/operator_inc.adoc[`operator++`] | Advance this iterator to the next element. | xref:BloombergLP/bslstl/RandomAccessIterator/operator_plus_eq.adoc[`operator+=`] | Advance this iterator by the specified offset. | xref:BloombergLP/bslstl/RandomAccessIterator/operator_dec.adoc[`operator‐‐`] | Regress this iterator to the previous element. | xref:BloombergLP/bslstl/RandomAccessIterator/operator_minus_eq.adoc[`operator‐=`] | Regress this iterator by the specified offset. | xref:BloombergLP/bslstl/ForwardIterator/operator_ptr.adoc[`operator‐>`] | Return a pointer to the current element. | xref:BloombergLP/bslstl/RandomAccessIterator/operator_subs.adoc[`operator[]`] | Return a reference to the element at the specified index offset. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/operator_not_eq-093.adoc[`operator!=`] | Return `true` if `lhs` and `rhs` do not have the same value. | xref:BloombergLP/bslstl/operator_not_eq-0bc.adoc[`operator!=`] | Return `true` if `lhs` and `rhs` do not have the same value. | xref:BloombergLP/bslstl/operator_not_eq-0d.adoc[`operator!=`] | Return whether two bidirectional iterators refer to different positions. | xref:BloombergLP/bslstl/operator_plus-09.adoc[`operator+`] | Return an iterator `rhs` positions past `lhs`. | xref:BloombergLP/bslstl/operator_plus-0fa.adoc[`operator+`] | Return an iterator `lhs` positions past `rhs`. | xref:BloombergLP/bslstl/operator_inc-005.adoc[`operator++`] | Advance `iter` to the next element and return its previous value. | xref:BloombergLP/bslstl/operator_inc-008.adoc[`operator++`] | Advance `iter` to the next element and return its previous value. | xref:BloombergLP/bslstl/operator_inc-07.adoc[`operator++`] | Post‐increment the specified iterator and return its previous value. | xref:BloombergLP/bslstl/operator_minus-02.adoc[`operator‐`] | Return an iterator `rhs` positions before `lhs`. | xref:BloombergLP/bslstl/operator_minus-0b.adoc[`operator‐`] | Return the distance from `rhs` to `lhs`. | xref:BloombergLP/bslstl/operator_dec-05.adoc[`operator‐‐`] | Regress `iter` to the previous element and return its previous value. | xref:BloombergLP/bslstl/operator_dec-08.adoc[`operator‐‐`] | Post‐decrement the specified iterator and return its previous value. | xref:BloombergLP/bslstl/operator_lt.adoc[`operator<`] | Return `true` if `lhs` precedes `rhs` in the iteration sequence. | xref:BloombergLP/bslstl/operator_le.adoc[`operator<=`] | Return `true` if `lhs` precedes or equals `rhs` in the iteration sequence. | xref:BloombergLP/bslstl/operator_eq-066.adoc[`operator==`] | Return `true` if `lhs` and `rhs` have the same value. | xref:BloombergLP/bslstl/operator_eq-08.adoc[`operator==`] | Return whether two bidirectional iterators refer to the same position. | xref:BloombergLP/bslstl/operator_eq-0c7.adoc[`operator==`] | Return `true` if `lhs` and `rhs` have the same value. | xref:BloombergLP/bslstl/operator_gt.adoc[`operator>`] | Return `true` if `lhs` follows `rhs` in the iteration sequence. | xref:BloombergLP/bslstl/operator_ge.adoc[`operator>=`] | Return `true` if `lhs` follows or equals `rhs` in the iteration sequence. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#