Класс или встроенный типXмоделирует концепциюRandom Access Traversal, если следующие выражения действительны и уважают заявленную семантику. В приведенной ниже таблицеРасстояниеитератор_traits::difference_typeиnпредставляет собой постоянный объект типаРасстояние.
Random Access Traversal Iterator Requirements (in addition to Bidirectional Traversal)
Expression
Return Type
Operational Semantics
Assertion/
Precondition
r+=n
X&
<
{
Distance m = n;
if (m >= 0)
while (m--)
++r;
else
while (m++)
--r;
return r;
}
>
a+n,n+a
X
{Xtmp=a;возвратtmp+=n;}
r-=n
X&
возвратr+=-n
a-n
X
{Xtmp=a;возвратtmp-=n;}
б-а
Расстояние
a<b?расстояние (a,b):- расстояние (b,a)
pre: существует значениеn, так чтоa+n==b.b==a[b-а].
a [n]
конвертируемый в T
*(a+n)
А есть АЧитаемый итератор
a [n]=v
конвертируемый в T
*(a+n)=v
А — это. Пишущий итератор
a<b
b-a>0
<является отношением полного упорядочения
a>b
b<a
>представляет собой полное упорядоченное отношение
a>=b
!<b]
a<=b
!>b]
iterator_traversal::type
Преобразуемый вrandom_access_traversal_tag
Статья Random Access Traversal Concept раздела может быть полезна для разработчиков на c++ и boost.