CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Wed, 23 Jul 2025 06:55:52 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/iterator/RandomAccessIterator/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 23 Jul 2025 06:55:52 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"8214-kUvPf9Hm0sruGudRfB89UHmCQl8"
Content-Encoding: gzip
Empty class to identify the category of an iterator as a random-access iterator:
Random-access iterators are iterators that can be used to access elements at an arbitrary offset position relative to the element they point to, offering the same functionality as pointers.
Random-access iterators are the most complete iterators in terms of functionality. All pointer types are also valid random-access iterators.
There is not a single type of random-access iterator: Each container may define its own specific iterator type able to iterate through it and access its elements. But all random access iterators support -at least- the following operations:
Where X is a random-access iterator type, a and b are objects of this iterator type, n is a value of its difference type, and t is an object of the type pointed by the iterator type (or some other type that can be assigned to the lvalue returned by dereferencing an object of type X).
Constant iterators are iterators that do not fulfill the requirements of an output iterator; Dereferencing them yields a reference to a constant element (such as
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<iterator>
- iterator
- iterator_traits
functions
- advance
- back_inserter
-
beginC++11
- distance
-
endC++11
- front_inserter
- inserter
-
make_move_iteratorC++11
-
nextC++11
-
prevC++11
iterator categories
predefined iterators
- Reference
- <iterator>
- random_access_iterator_tag
class
<iterator>
std::random_access_iterator_tag
struct random_access_iterator_tag {};
Random-access iterator category
Random-access iterators
- InputOutput
- Forward
- Bidirectional
- Random Access
Random-access iterators are iterators that can be used to access elements at an arbitrary offset position relative to the element they point to, offering the same functionality as pointers.
Random-access iterators are the most complete iterators in terms of functionality. All pointer types are also valid random-access iterators.
There is not a single type of random-access iterator: Each container may define its own specific iterator type able to iterate through it and access its elements. But all random access iterators support -at least- the following operations:
property | valid expressions |
---|---|
Is default-constructible, copy-constructible, copy-assignable and destructible | X a; |
Can be compared for equivalence using the equality/inequality operators (meaningful when both iterator values iterate over the same underlying sequence). | a == b |
Can be dereferenced as an rvalue (if in a dereferenceable state). | *a |
For mutable iterators (non-constant iterators): Can be dereferenced as an lvalue (if in a dereferenceable state). | *a = t |
Can be incremented (if in a dereferenceable state). The result is either also dereferenceable or a past-the-end iterator. Two iterators that compare equal, keep comparing equal after being both increased. | ++a |
Can be decremented (if a dereferenceable iterator value precedes it). | --a a-- *a-- |
Supports the arithmetic operators + and - between an iterator and an integer value, or subtracting an iterator from another. | a + n |
Can be compared with inequality relational operators (< , > , <= and >= ). | a < b |
Supports compound assignment operations += and -= | a += n |
Supports the offset dereference operator ([] ) | a[n] |
property | valid expressions |
---|---|
Is default-constructible, copy-constructible, copy-assignable and destructible | X a; |
Can be compared for equivalence using the equality/inequality operators (meaningful when both iterator values iterate over the same underlying sequence). | a == b |
Can be dereferenced as an rvalue (if in a dereferenceable state). | *a |
For mutable iterators (non-constant iterators): Can be dereferenced as an lvalue (if in a dereferenceable state). | *a = t |
Can be incremented (if in a dereferenceable state). The result is either also dereferenceable or a past-the-end iterator. Two iterators that compare equal, keep comparing equal after being both increased. | ++a |
Can be decremented (if a dereferenceable iterator value precedes it). | --a a-- *a-- |
Supports the arithmetic operators + and - between an iterator and an integer value, or subtracting an iterator from another. | a + n |
Can be compared with inequality relational operators (< , > , <= and >= ). | a < b |
Supports compound assignment operations += and -= | a += n |
Supports the offset dereference operator ([] ) | a[n] |
Lvalues are swappable. | swap(a,b) |
Where X is a random-access iterator type, a and b are objects of this iterator type, n is a value of its difference type, and t is an object of the type pointed by the iterator type (or some other type that can be assigned to the lvalue returned by dereferencing an object of type X).
Constant iterators are iterators that do not fulfill the requirements of an output iterator; Dereferencing them yields a reference to a constant element (such as
const T&
).See also
- input_iterator_tag
- Input iterator category (class)
- output_iterator_tag
- Output iterator category (class)
- forward_iterator_tag
- Forward iterator category (class)
- bidirectional_iterator_tag
- Bidirectional iterator category (class)
- iterator
- Iterator base class (class template)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us