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 rvalue value_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_type
ité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_category
ité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_type
ité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++