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

move_iterator

Constructeur des objets de type move_iterator.

Typedef

move_iterator::iterator_type

Synonyme pour le paramètre du modèle RandomIterator.

move_iterator::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.

move_iterator::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.

move_iterator::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.

move_iterator::pointer

Synonyme du paramètre de modèle RandomIterator.

move_iterator::reference

Synonyme de la référence rvalue value_type&&.

Fonctions membres

move_iterator::base

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

Opérateurs

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 préincrémentation ou d'une postincrémentation.

move_iterator::operator--

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.

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.

Configuration requise

En-tête : <iterator>

Espace de noms : std

Voir aussi

Tâches

Comment : écrire un constructeur move

Référence

<iterator>

Lvalues et Rvalues

Bibliothèque STL (Standard Template Library)