Bibliothèque d'itérateur C ++ - random_access_iterator_tag

La description

Il sert à identifier la catégorie d'un itérateur et un itérateur à accès aléatoire prend en charge au moins l'une des opérations suivantes.

C ++ 98

propriété expressions valides
C'est un constructeur par défaut, constructible par copie, assignable par copie et destructible

X a;

X b(a);

b = a;

Il peut être comparé pour l'équivalence en utilisant les opérateurs d'égalité / inégalité

(significatif lorsque les deux valeurs d'itérateur itèrent sur la même séquence sous-jacente).

a == b

a != b

Il peut être déréférencé en tant que rvalue (s'il est dans un état déréférencable ).

*a

a->m

Pour les itérateurs mutables ( itérateurs non constants ):

Peut être déréférencé en tant que lvalue (si dans un état déréférencable ).

*a = t

Il peut être incrémenté (s'il est dans un état déréférençable ).

Le résultat est soit également déréférencable, soit un itérateur au-delà de la fin .

Deux itérateurs qui comparent égaux continuent de comparer égaux après avoir été tous deux augmentés.

++a

a++

*a++

Il peut être décrémenté (si une valeur d'itérateur déréférençable la précède).

--une

une--

*une--

Prend en charge les opérateurs arithmétiques +et -entre un itérateur et une valeur entière, ou soustrait un itérateur d'un autre.

a + n

n + a

a - n

a - b

Peut être comparé avec les opérateurs relationnels (inégalité <, >, <=et >=).

a < b

a > b

a <= b

a >= b

Prend en charge les opérations d'affectation composées +=et-=

a += n

a -= n

Prend en charge l'opérateur de déréférence de décalage ( []) a[n]

C ++ 11

propriété expressions valides
C'est un constructeur par défaut, constructible par copie, assignable par copie et destructible

X a;

X b(a);

b = a;

Il peut être comparé pour l'équivalence en utilisant les opérateurs d'égalité / inégalité

(significatif lorsque les deux valeurs d'itérateur itèrent sur la même séquence sous-jacente).

a == b

a != b

Il peut être déréférencé en tant que rvalue (s'il est dans un état déréférencable ).

*a

a->m

Pour les itérateurs mutables ( itérateurs non constants ):

Peut être déréférencé en tant que lvalue (si dans un état déréférencable ).

*a = t

Il peut être incrémenté (s'il est dans un état déréférençable ).

Le résultat est soit également déréférencable, soit un itérateur au-delà de la fin .

Deux itérateurs qui comparent égaux continuent de comparer égaux après avoir été tous deux augmentés.

++a

a++

*a++

Il peut être décrémenté (si une valeur d'itérateur déréférençable la précède).

--une

une--

*une--

Il prend en charge les opérateurs arithmétiques +et -entre un itérateur et une valeur entière, ou soustrait un itérateur d'un autre.

a + n

n + a

a - n

a - b

Il peut être comparé avec les opérateurs relationnels (inégalité <, >, <=et >=).

a < b

a > b

a <= b

a >= b

Il prend en charge les opérations d'affectation composées +=et-=

a += n

a -= n

Il prend en charge l'opérateur de déréférence de décalage ( []) a[n]
Les valeurs L sont permutables . swap(a,b)

Déclaration

Voici la déclaration pour std :: random_access_iterator_tag.

C ++ 11

struct random_access_iterator_tag {};