Biblioteca de iteradores de C ++ - random_access_iterator_tag

Descripción

Se utiliza para identificar la categoría de un iterador y un iterador de acceso aleatorio admite al menos una de las siguientes operaciones.

C ++ 98

propiedad expresiones válidas
Es una copia-construible, copia-asignable y destructible por defecto.

X a;

X b(a);

b = a;

Se puede comparar la equivalencia utilizando los operadores de igualdad / desigualdad

(significativo cuando ambos valores del iterador iteran sobre la misma secuencia subyacente).

a == b

a != b

Puede desreferenciarse como un rvalue (si está en un estado desreferenciable ).

*a

a->m

Para iteradores mutables ( iteradores no constantes ):

Puede desreferenciarse como un valor l (si se encuentra en un estado desreferenciable ).

*a = t

Puede incrementarse (si está en un estado desreferenciable ).

El resultado también es desreferenciable o un iterador pasado al final .

Dos iteradores que se comparan iguales, siguen comparando iguales después de que ambos aumentan.

++a

a++

*a++

Puede decrementarse (si lo precede un valor de iterador desreferenciable ).

--un

un--

*un--

Soporta los operadores aritméticos +y -entre un iterador y un valor entero, o restando un iterador de otro.

a + n

n + a

a - n

a - b

Se puede comparar con los operadores relacionales de desigualdad ( <, >, <=y >=).

a < b

a > b

a <= b

a >= b

Admite operaciones de asignación compuesta +=y-=

a += n

a -= n

Admite el operador de desreferencia de compensación ( []) a[n]

C ++ 11

propiedad expresiones válidas
Es una copia-construible, copia-asignable y destructible por defecto.

X a;

X b(a);

b = a;

Se puede comparar la equivalencia utilizando los operadores de igualdad / desigualdad

(significativo cuando ambos valores del iterador iteran sobre la misma secuencia subyacente).

a == b

a != b

Puede desreferenciarse como un rvalue (si está en un estado desreferenciable ).

*a

a->m

Para iteradores mutables ( iteradores no constantes ):

Puede desreferenciarse como un valor l (si se encuentra en un estado desreferenciable ).

*a = t

Puede incrementarse (si está en un estado desreferenciable ).

El resultado también es desreferenciable o un iterador pasado al final .

Dos iteradores que se comparan iguales, siguen comparando iguales después de que ambos aumentan.

++a

a++

*a++

Puede decrementarse (si lo precede un valor de iterador desreferenciable ).

--un

un--

*un--

Es compatible con los operadores aritméticos +y -entre un iterador y un valor entero, o restando un iterador de otro.

a + n

n + a

a - n

a - b

Se puede comparar con los operadores relacionales desigualdad ( <, >, <=y >=).

a < b

a > b

a <= b

a >= b

Admite operaciones de asignación compuesta +=y-=

a += n

a -= n

Es compatible con el operador de desreferencia de compensación ( []) a[n]
Los valores L son intercambiables . swap(a,b)

Declaración

A continuación se muestra la declaración de std :: random_access_iterator_tag.

C ++ 11

struct random_access_iterator_tag {};