Biblioteca de iteradores de C ++ - bidirectional_iterator_tag

Descripción

Se utiliza para identificar la categoría de un iterador como un iterador bidireccional y el iterador bidireccional 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--

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--

Los valores L son intercambiables . swap(a,b)

Declaración

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

C ++ 11

struct bidirectional_iterator_tag {}