Biblioteca C ++ Iterator - bidirectional_iterator_tag

Descrição

É usado para identificar a categoria de um iterador como um iterador bidirecional e o iterador bidirecional suporta pelo menos uma das seguintes operações.

C ++ 98

propriedade expressões válidas
É um padrão construtível, copiável, atribuído por cópia e destrutível

X a;

X b(a);

b = a;

Pode ser comparado para equivalência usando os operadores de igualdade / desigualdade

(significativo quando ambos os valores do iterador iteram na mesma sequência subjacente).

a == b

a != b

Ele pode ser desreferenciado como um rvalue (se estiver em um estado desreferenciável ).

*a

a->m

Para iteradores mutáveis ( iteradores não constantes ):

Pode ser desreferenciado como um lvalue (se em um estado desreferenciável ).

*a = t

Ele pode ser incrementado (se estiver em um estado não referenciável ).

O resultado também pode ser desreferenciável ou um iterador ultrapassado .

Dois iteradores que comparam iguais, continuam comparando iguais após serem ambos aumentados.

++a

a++

*a++

Ele pode ser diminuído (se um valor de iterador não referenciável o preceder).

--uma

uma--

*uma--

C ++ 11

propriedade expressões válidas
É um padrão construtível, copiável, atribuído por cópia e destrutível

X a;

X b(a);

b = a;

Pode ser comparado para equivalência usando os operadores de igualdade / desigualdade

(significativo quando ambos os valores do iterador iteram na mesma sequência subjacente).

a == b

a != b

Ele pode ser desreferenciado como um rvalue (se estiver em um estado desreferenciável ).

*a

a->m

Para iteradores mutáveis ( iteradores não constantes ):

Pode ser desreferenciado como um lvalue (se em um estado desreferenciável ).

*a = t

Ele pode ser incrementado (se estiver em um estado não referenciável ).

O resultado também pode ser desreferenciável ou um iterador ultrapassado .

Dois iteradores que comparam iguais, continuam comparando iguais após serem ambos aumentados.

++a

a++

*a++

Ele pode ser diminuído (se um valor de iterador não referenciável o preceder).

--uma

uma--

*uma--

Lvalues ​​são trocáveis . swap(a,b)

Declaração

A seguir está a declaração para std :: bidirectional_iterator_tag.

C ++ 11

struct bidirectional_iterator_tag {}