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

La description

Il sert à identifier la catégorie d'un itérateur comme un itérateur bidirectionnel et un itérateur bidirectionnel 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--

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

Les valeurs L sont permutables . swap(a,b)

Déclaration

Voici la déclaration pour std :: bidirectional_iterator_tag.

C ++ 11

struct bidirectional_iterator_tag {}