move_iterator-Klasse
Die Klassenvorlage move_iterator ist ein Wrapper für einen Iterator. Das move_iterator-Objekt stellt das gleiche Verhalten bereit wie der Iterator, der es umschließt bzw. speichert, außer, dass der Dereferenzierungsoperator des gespeicherten Iterators in einen rvalue-Verweis und somit ein Kopier- in ein Verschiebevorgang verwandelt wird. Weitere Informationen zu rvalues finden Sie unter Rvalue-Verweisdeklarator: &&.
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;
};
Hinweise
Die Vorlagenklasse beschreibt ein Objekt, das sich wie ein Iterator verhält, außer wenn es dereferenziert wird. Sie speichert einen Random-Access-Iterator vom Typ Iterator, auf den über die Memberfunktion base() zugegriffen wird. Alle Vorgänge für ein move_iterator werden direkt für den gespeicherten Iterator ausgeführt, außer dass das Ergebnis von operator* implizit in value_type&& umgewandelt wird, um einen rvalue-Verweis zu erstellen.
Ein move_iterator kann Vorgänge ausführen, die nicht vom umschlossenen Iterator definiert werden. Diese Vorgänge sollten nicht verwendet werden.
Konstruktoren
Der Konstruktor für Objekte des Typs move_iterator. |
Typedefs
Ein Synonym für den Vorlagenparameter RandomIterator. |
|
Als Synonym für einen längeren typename-Ausdruck desselben Namens identifiziert iterator_category die allgemeinen Fähigkeiten des Iterators. |
|
Als Synonym für einen längeren typename-Ausdruck desselben Namens beschreibt value_type den Typ der Iteratorelemente. |
|
Als Synonym für einen längeren typename-Ausdruck desselben Namens beschreibt difference_type den ganzzahligen Typ, der benötigt wird, um Unterschiedswerte zwischen Elementen auszudrücken. |
|
Ein Synonym für den Vorlagenparameter RandomIterator. |
|
Ein Synonym für den rvalue-Verweis value_type&&. |
Memberfunktionen
Die Memberfunktion gibt den gespeicherten Iterator zurück, der von diesem move_iterator umschlossen wird. |
Operators
Gibt (reference)*base(). zurück. |
|
Erhöht den gespeicherten Iterator. Das genaue Verhalten hängt davon ab, ob es sich um einen Präinkrement- oder einen Postinkrementvorgang handelt. |
|
Verringert den gespeicherten Iterator. Das genaue Verhalten hängt davon ab, ob es sich um einen Prädekrement- oder einen Postdekrementvorgang handelt. |
|
Gibt &**this zurück. |
|
Gibt move_iterator(*this) -= zurück, indem der Wert auf der rechten Seite zuerst von der aktuellen Position subtrahiert wird. |
|
Gibt (reference)*(*this + off) zurück. Ermöglicht es Ihnen, ein Offset von der aktuellen Basisklasse anzugeben, um den Wert an diesem Speicherort abzurufen. |
|
Gibt den Wert move_iterator(*this) += zurück. Ermöglicht es Ihnen, ein Offset zur Basisklasse hinzuzufügen, um den Wert an diesem Speicherort abzurufen. |
|
Fügt dem Wert auf der rechten Seite dem gespeicherten Iterator hinzu und gibt *this zurück. |
|
Subtrahiert den Wert auf der rechten Seite vom gespeicherten Iterator und gibt *this zurück. |
Anforderungen
Header: <Iterator>
Namespace: std
Siehe auch
Aufgaben
Gewusst wie: Schreiben eines Bewegungskonstruktors