Biblioteca C ++ Iterator - random_access_iterator_tag

Descrição

É usado para identificar a categoria de um iterador e um iterador de acesso aleatório 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 depois de 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--

Suporta os operadores aritméticos +e -entre um iterador e um valor inteiro, ou subtraindo um iterador de outro.

a + n

n + a

a - n

a - b

Pode ser comparado com operadores relacionais de desigualdade ( <, >, <=e >=).

a < b

a > b

a <= b

a >= b

Suporta operações de atribuição composta +=e-=

a += n

a -= n

Suporta o operador de desreferência de deslocamento ( []) a[n]

C ++ 11

propriedade expressões válidas
É um padrão construtível, construtível por cópia, atribuível 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 depois de 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--

Ele suporta os operadores aritméticos +e -entre um iterador e um valor inteiro, ou subtraindo um iterador de outro.

a + n

n + a

a - n

a - b

Ele pode ser comparado com os operadores relacionais desigualdade ( <, >, <=e >=).

a < b

a > b

a <= b

a >= b

Ele suporta operações de atribuição composta +=e-=

a += n

a -= n

Ele suporta o operador de desreferência de deslocamento ( []) a[n]
Lvalues ​​são trocáveis . swap(a,b)

Declaração

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

C ++ 11

struct random_access_iterator_tag {};