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 |
|
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). |
|
Ele pode ser desreferenciado como um rvalue (se estiver em um estado desreferenciável ). |
|
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. |
|
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 |
|
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). |
|
Ele pode ser desreferenciado como um rvalue (se estiver em um estado desreferenciável ). |
|
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. |
|
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 {}