Partager via


reverse_iterator, classe

Cette classe de modèle est un adaptateur d'itérateur qui décrit un objet itérateur inverse qui se comporte comme un itérateur d'accès aléatoire ou bidirectionnel, mais en sens inverse. Elle permet de parcourir une plage à reculons.

template <class RandomIterator>
class reverse_iterator

Paramètres

  • RandomIterator
    Type qui représente l'itérateur à adapter pour un fonctionnement en sens inverse.

Notes

Les conteneurs existants dans la bibliothèque STL (Standard Template Library) définissent également les types reverse_iterator et const_reverse_iterator, et possèdent les fonctions membres rbegin et rend qui retournent des itérateurs inverses. Ces itérateurs ont une sémantique de remplacement. L'adaptateur reverse_iterator complète cette fonctionnalité en tant que sémantique d'insertion d'offres et peut également être utilisé avec des flux.

Les reverse_iterator qui requièrent un itérateur bidirectionnel ne doivent appeler aucune des fonctions membres operator+=, operator+, operator-=, operator- et operator[], qui peuvent uniquement être utilisées avec des itérateurs d'accès aléatoire.

Si la plage d'un itérateur est [_First, _Last), où le crochet de gauche indique l'inclusion de _First et la parenthèse de droite indique l'inclusion des éléments jusqu'à _Left tout en excluant _Left lui-même. Les mêmes éléments sont inclus dans la séquence inversée [rev – _First, rev – _Left) afin que si _Left représente un élément après le dernier élément d'une séquence, le premier élément rev – _First dans la séquence inversée pointe sur *(_Left – 1). L'identité qui associe tous les itérateurs inverses à leurs itérateurs sous-jacents est :

&*(reverse_iterator ( i ) ) == &*( i – 1).

En pratique, cela signifie que dans la séquence inversée le reverse_iterator se rapportera à l'élément situé une position au-delà (à droite) de l'élément auquel l'itérateur se rapportait dans la séquence d'origine. Ainsi, si un itérateur se rapportait à l'élément 6 dans la séquence (2, 4, 6, 8), le reverse_iterator se rapporte à l'élément 4 dans la séquence inversée (8, 6, 4, 2).

Constructeurs

reverse_iterator

Construit un reverse_iterator par défaut ou un reverse_iterator à partir d'un itérateur sous-jacent.

Typedef

difference_type

Type qui fournit la différence entre deux objets reverse_iterator se rapportant à des éléments dans le même conteneur.

iterator_type

Type qui fournit l'itérateur sous-jacent d'un reverse_iterator.

pointer

Type qui fournit un pointeur vers un élément traité par un reverse_iterator.

référence

Type qui fournit une référence à un élément traité par un reverse_iterator.

Fonctions membres

base

Récupère l'itérateur sous-jacent à partir de son reverse_iterator.

Opérateurs

operator*

Retourne l'élément traité par reverse_iterator.

operator+

Ajoute un décalage à un itérateur et retourne le nouvel reverse_iterator qui se rapporte à l'élément inséré à la nouvelle position décalée.

operator++

Incrémente le reverse_iterator à l'élément suivant.

operator+=

Ajoute un décalage spécifié à partir d'un reverse_iterator.

operator-

Soustrait un décalage à un reverse_iterator et retourne un reverse_iterator se rapportant à l'élément situé à la position décalée.

operator--

Décrémente le reverse_iterator à l'élément précédent.

operator-=

Soustrait un décalage spécifié d'un reverse_iterator.

operator->

Retourne un pointeur vers l'élément traité par le reverse_iterator.

operator[]

Retourne une référence à un élément décalé d'un nombre donné de positions par rapport à l'élément auquel un reverse_iterator se rapportait.

Configuration requise

En-tête : <iterator>

Espace de noms : std

Voir aussi

Référence

<iterator>

Sécurité des threads dans la bibliothèque standard C++

Bibliothèque STL (Standard Template Library)