📄 randomaccessiterator.rst
字号:
.. Iterators/Concepts//Random Access Iterator |30
Random Access Iterator
======================
Description
-----------
A |Random Access Iterator| is a |Bidirectional Iterator| that provides
constant-time guarantees on moving the iterator an arbitrary number of positions
forward or backward and for measuring the distance to another iterator in the
same sequence.
Refinement of
-------------
|Bidirectional Iterator|
Expression requirements
-----------------------
In addition to the requirements defined in |Bidirectional Iterator|,
the following requirements must be met.
+---------------------------+-------------------------------------------+---------------------------+
| Expression | Type | Complexity |
+===========================+===========================================+===========================+
| ``next<i>::type`` | |Random Access Iterator| | Amortized constant time |
+---------------------------+-------------------------------------------+---------------------------+
| ``prior<i>::type`` | |Random Access Iterator| | Amortized constant time |
+---------------------------+-------------------------------------------+---------------------------+
| ``i::category`` | |Integral Constant|, convertible | Constant time |
| | to ``random_access_iterator_tag`` | |
+---------------------------+-------------------------------------------+---------------------------+
| ``advance<i,n>::type`` | |Random Access Iterator| | Amortized constant time |
+---------------------------+-------------------------------------------+---------------------------+
| ``distance<i,j>::type`` | |Integral Constant| | Amortized constant time |
+---------------------------+-------------------------------------------+---------------------------+
Expression semantics
--------------------
.. parsed-literal::
typedef advance<i,n>::type j;
:Semantics:
See ``advance`` specification
.. ..........................................................................
.. parsed-literal::
typedef distance<i,j>::type n;
:Semantics:
See ``distance`` specification
Invariants
----------
For any random access iterators ``i`` and ``j`` the following invariants always
hold:
* If ``advance<i,n>::type`` is well-defined, then
``advance< advance<i,n>::type, negate<n>::type >::type`` is a null operation.
See also
--------
|Iterators|, |Bidirectional Iterator|, |Random Access Sequence|, |advance|, |distance|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -