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 (ou stocke), à la différence près qu'il convertit l'opérateur de déréférence de l'itérateur stocké en une référence rvalue, convertissant ainsi une copie en déplacement. Pour plus d'informations sur les rvalues, consultez Déclarateur de référence Rvalue : &&.
template<class Iterator>
class move_iterator {
public:
typedef Iterator iterator_type;
typedef typename
iterator_traits<Iterator>::iterator_category
iterator_category;
typedef typename iterator_traits<Iterator>::value_type
value_type;
typedef typename iterator_traits<Iterator>::difference_type
difference_type;
typedef Iterator
pointer;
typedef value_type&&
reference;
move_iterator();
explicit move_iterator (Iterator right);
template<class Type>
move_iterator (const move_iterator<Type>& right);
template <class Type>
move_iterator& operator=(const move_iterator<Type>& right);
iterator_type base () const;
reference operator* () const;
pointer operator-> () const;
move_iterator& operator++ ();
move_iterator operator++ (int);
move_iterator& operator-- ();
move_iterator operator-- (int);
move_iterator& operator+= (difference_type off);
move_iterator operator+ (difference_type off) const;
move_iterator& operator-= (difference_type off);
move_iterator operator- (difference_type off) const;
reference operator[] (difference_type off) const;
};
Notes
La classe de modèle décrit un objet qui se comporte comme un itérateur, sauf lorsqu'il est déréférencé. Elle stocke un itérateur d'accès aléatoire de type Iterator, accessible via 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'effectuer des opérations qui ne sont pas définies par l'itérateur encapsulé. Ces opérations ne doivent pas être utilisées.
Constructeurs
Constructeur des objets de type move_iterator. |
Typedef
Synonyme pour le paramètre du modèle RandomIterator. |
|
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. |
|
Synonyme d'une expression typename plus longue du même nom, value_type décrit le type des éléments de l'itérateur. |
|
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. |
|
Synonyme du paramètre de modèle RandomIterator. |
|
Synonyme de la référence rvalue value_type&&. |
Fonctions membres
La fonction membre retourne l'itérateur stocké encapsulé par le move_iterator. |
Opérateurs
Retourne (reference)*base().. |
|
Incrémente l'itérateur stocké. Le comportement exact varie selon qu'il s'agit d'une préincrémentation ou d'une postincrémentation. |
|
Décrémente l'itérateur stocké. Le comportement exact varie selon qu'il s'agit d'une préincrémentation ou d'une postincrémentation. |
|
Retourne &**this. |
|
Retourne move_iterator(*this) -= en soustrayant d'abord la valeur située à droite de la position actuelle. |
|
Retourne (reference)*(*this + off). Permet de spécifier un décalage depuis la base actuelle pour obtenir la valeur de l'emplacement. |
|
Retourne la valeur move_iterator(*this) += . Permet d'ajouter un décalage à la base pour obtenir la valeur de l'emplacement. |
|
Ajoute la valeur située à droite de l'itérateur stocké, et retourne *this. |
|
Soustrait la valeur située à droite de l'itérateur stocké, et retourne *this. |
Configuration requise
En-tête : <iterator>
Espace de noms : std
Voir aussi
Tâches
Comment : écrire un constructeur move