Partager via


move_iterator, classe

Le modèle de classe move_iterator est un wrapper pour un itérateur. Le move_iterator fournit le même comportement que l’itérateur qu’il encapsule (stocke), sauf qu’il transforme l’opérateur de déréférencement de l’itérateur stocké en référence rvalue, en transformant une copie en déplacement. Pour plus d’informations sur les rvalues, consultez Déclarateur de référence Rvalue : &&.

Syntaxe

class move_iterator;

Notes

Le modèle de classe décrit un objet qui se comporte comme un itérateur, sauf en cas de déréférencement. Elle stocke un itérateur d’accès aléatoire de type Iterator, accessible par le biais de la fonction membre base(). Toutes les opérations effectuées sur un move_iterator sont exécutées directement sur l'itérateur stocké, mais le résultat du operator* est implicitement converti en value_type&& pour créer une référence rvalue.

Un move_iterator peut être capable d’opérations qui ne sont pas définies par l’itérateur encapsulé. Ces opérations ne doivent pas être utilisées.

Constructeurs

Constructeur Description
move_iterator Constructeur des objets de type move_iterator.

Typedefs

Nom de type Description
iterator_type Synonyme pour le paramètre du modèle RandomIterator.
iterator_category Synonyme d'une expression typename plus longue du même nom, iterator_category représente les fonctionnalités générales de l'itérateur.
value_type Synonyme d'une expression typename plus longue du même nom, value_type décrit le type des éléments de l'itérateur.
difference_type Synonyme d'une expression typename plus longue du même nom, difference_type décrit le type intégral requis pour exprimer des différences de valeur entre les éléments.
pointer Synonyme du paramètre de modèle RandomIterator.
référence Synonyme de la référence rvaluevalue_type&&.

Fonctions Membre

Fonction membre Description
base La fonction membre retourne l'itérateur stocké encapsulé par le move_iterator.

Opérateurs

Opérateur Description
move_iterator::operator* Retourne (reference)*base().
move_iterator::operator++ Incrémente l'itérateur stocké. Le comportement exact varie selon qu’il s’agit d’une opération de préincrément ou de post-décrémentation.
move_iterator::operator-- Décrémente l'itérateur stocké. Le comportement exact varie selon qu’il s’agit d’une prédécrémentation ou d’une opération de post-décrémentation.
move_iterator::operator-> Retourne &**this.
move_iterator::operator- Retourne move_iterator(*this) -= en soustrayant d’abord la valeur située à droite de la position actuelle.
move_iterator::operator[] Retourne (reference)*(*this + off). Permet de spécifier un décalage depuis la base actuelle pour obtenir la valeur de l'emplacement.
move_iterator::operator+ Retourne la valeur move_iterator(*this) +=. Permet d'ajouter un décalage à la base pour obtenir la valeur de l'emplacement.
move_iterator::operator+= Ajoute la valeur située à droite de l'itérateur stocké, et retourne *this.
move_iterator::operator-= Soustrait la valeur située à droite de l'itérateur stocké, et retourne *this.

Spécifications

Header :<iterator>

Espace de noms : std

move_iterator::base

Retourne l'itérateur stocké pour ce move_iterator.

RandomIterator base() const;

Notes

La fonction membre retourne l'itérateur stocké.

move_iterator::difference_type

Le type difference_type est basé move_iterator typedef sur la caractéristique difference_typeitérateur et peut être utilisé de manière interchangeable avec celui-ci.

typedef typename iterator_traits<RandomIterator>::difference_type difference_type;

Notes

Le type est un synonyme de la caractéristique d'itérateur typename iterator_traits<RandomIterator>::pointer.

move_iterator::iterator_category

Le type iterator_category est basé move_iterator typedef sur la caractéristique iterator_categoryitérateur et peut être utilisé de manière interchangeable avec celui-ci.

typedef typename iterator_traits<RandomIterator>::iterator_category  iterator_category;

Notes

Le type est un synonyme de la caractéristique d'itérateur typename iterator_traits<RandomIterator>::iterator_category.

move_iterator::iterator_type

Le type iterator_type est basé sur le paramètre de modèle RandomIterator pour le modèle de classe move_iterator. Vous pouvez utiliser indifféremment l'un ou l'autre.

typedef RandomIterator iterator_type;

Notes

Le type est un synonyme du paramètre de modèle RandomIterator.

move_iterator ::move_iterator

Construit un itérateur de déplacement. Utilise le paramètre comme itérateur stocké.

move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);

Paramètres

right
Itérateur à utiliser comme itérateur stocké.

Notes

Le premier constructeur initialise l'itérateur stocké avec son constructeur par défaut. Les autres constructeurs initialisent l'itérateur stocké avec base.base().

move_iterator::operator+=

Ajoute un offset à l'itérateur stocké, pour que celui-ci pointe vers l'élément au nouvel emplacement actuel. L'opérateur déplace ensuite le nouvel élément actif.

move_iterator& operator+=(difference_type _Off);

Paramètres

_De
Offset à ajouter à la position actuelle pour déterminer la nouvelle position actuelle.

Valeur de retour

Retourne le nouvel élément actif.

Notes

L’opérateur ajoute _Off à l’itérateur stocké. Il retourne ensuite *this.

move_iterator::operator-=

Recule du nombre spécifié d'éléments. Cet opérateur soustrait un offset de l'itérateur stocké.

move_iterator& operator-=(difference_type _Off);

Paramètres

Notes

L'opérateur évalue *this += -_Off. Il retourne ensuite *this.

move_iterator::operator++

Incrémente l’itérateur stocké qui appartient à ce move_iterator. L’élément actuel est accessible par l’opérateur postincrement. L'élément suivant est accessible par l'opérateur de préincrémentation.

move_iterator& operator++();
move_iterator operator++(int);

Paramètres

Notes

Le premier opérateur (préincrémentation) incrémente l'itérateur stocké. Il retourne ensuite *this.

Le deuxième opérateur (postincrémentation) effectue une copie de *this et évalue ++*this. Ensuite, il retourne la copie.

move_iterator::operator+

Retourne la position de l'itérateur avancée d'un nombre quelconque d'éléments.

move_iterator operator+(difference_type _Off) const;

Paramètres

Notes

L’opérateur retourne move_iterator(*this) += _Off.

move_iterator::operator[]

Accorde l'accès à l'index de tableau aux éléments dans toute la plage du move iterator.

reference operator[](difference_type _Off) const;

Paramètres

Notes

L'opérateur retourne (reference)*(*this + _Off).

move_iterator::operator--

Les opérateurs membres de prédécrémentation et de postdécrémentation effectuent une décrémentation sur l'itérateur stocké.

move_iterator& operator--();
move_iterator operator--();

Paramètres

Notes

Le premier opérateur membre (prédécrémentation) décrémente l'itérateur stocké. Il retourne ensuite *this.

Le deuxième opérateur (postdécrémentation) effectue une copie de *this et évalue --*this. Ensuite, il retourne la copie.

move_iterator::operator-

Décrémente l'itérateur stocké et retourne la valeur indiquée.

move_iterator operator-(difference_type _Off) const;

Paramètres

Notes

L'opérateur retourne move_iterator(*this) -= _Off.

move_iterator::operator*

Déréférence l'itérateur stocké et retourne la valeur. Se comporte comme une rvalue reference et exécute une assignation de déplacement. L'opérateur transfère l'élément actuel hors de l'itérateur de base. L'élément qui suit devient le nouvel élément actuel.

reference operator*() const;

Notes

L'opérateur retourne (reference)*base().

move_iterator::operator->

Comme une normale RandomIterator operator->, elle fournit l’accès aux champs qui appartiennent à l’élément actuel.

pointer operator->() const;

Notes

L'opérateur retourne &**this.

move_iterator::pointer

Le type pointer est un typedef basé sur l'itérateur aléatoire RandomIterator pour move_iterator. Vous pouvez utiliser indifféremment l'un ou l'autre.

typedef RandomIterator  pointer;

Notes

Le type est un synonyme de RandomIterator.

move_iterator::reference

Le type reference est un typedef basé sur value_type&& pour move_iterator. Il peut être utilisé de manière interchangeable avec value_type&&.

typedef value_type&& reference;

Notes

Le type est un synonyme de value_type&&, qui est une référence rvalue.

move_iterator::value_type

Le type value_type est basé move_iterator typedef sur la caractéristique value_typeitérateur et peut être utilisé de manière interchangeable avec celui-ci.

typedef typename iterator_traits<RandomIterator>::value_type   value_type;

Notes

Le type est un synonyme de la caractéristique d'itérateur typename iterator_traits<RandomIterator>::value_type.

Voir aussi

<iterator>
Lvalues et Rvalues
Constructeurs de déplacement et opérateurs d’assignation de déplacement (C++)
Informations de référence sur la bibliothèque standard C++