move_iterator-Klasse
Die Klassenvorlage move_iterator
ist ein Wrapper für einen Iterator. Die move_iterator bietet das gleiche Verhalten wie der Iterator, der umbrochen wird (Speicher), mit der Ausnahme, dass der Dereferenzierungsoperator des gespeicherten Iterators in einen Rvalue-Verweis umgewandelt wird, wodurch eine Kopie in eine Verschiebung umgewandelt wird. Weitere Informationen zu Rvalues finden Sie unter Rvalue-Verweisdeklarator: &&.
Syntax
class move_iterator;
Hinweise
Die Klassenvorlage beschreibt ein Objekt, das sich wie ein Iterator verhält, mit Ausnahme der Ableitung. Sie speichert einen Random-Access-Iterator des Typs 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.
Möglicherweise move_iterator
kann eine Operation ausgeführt werden, die nicht vom umschlossenen Iterator definiert ist. Diese Vorgänge sollten nicht verwendet werden.
Konstruktoren
Konstruktor | Beschreibung |
---|---|
move_iterator | Der Konstruktor für Objekte des Typs move_iterator . |
TypeDefs
Typname | Beschreibung |
---|---|
iterator_type | Ein Synonym für den Vorlagenparameter RandomIterator . |
iterator_category | Als Synonym für einen längeren typename -Ausdruck desselben Namens identifiziert iterator_category die allgemeinen Fähigkeiten des Iterators. |
value_type | Als Synonym für einen längeren typename -Ausdruck desselben Namens beschreibt value_type den Typ der Iteratorelemente. |
difference_type | 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. |
pointer | Ein Synonym für den Vorlagenparameter RandomIterator . |
reference | Ein Synonym für den rvalue -Verweis value_type&& . |
Memberfunktionen
Memberfunktion | Beschreibung |
---|---|
base | Die Memberfunktion gibt den gespeicherten Iterator zurück, der von diesem move_iterator umschlossen wird. |
Operatoren
Operator | Beschreibung |
---|---|
move_iterator::operator* | Gibt (reference)*base() zurück. |
move_iterator::operator++ | Erhöht den gespeicherten Iterator. Das genaue Verhalten hängt davon ab, ob es sich um einen Vorschritt oder einen Postincrementvorgang handelt. |
move_iterator::operator-- | Verringert den gespeicherten Iterator. Das genaue Verhalten hängt davon ab, ob es sich um einen Vorabschritt oder einen Postdecrement-Vorgang handelt. |
move_iterator::operator-> |
Gibt &**this zurück. |
move_iterator::operator- | Gibt move_iterator(*this) -= zurück, indem der Wert auf der rechten Seite zuerst von der aktuellen Position subtrahiert wird. |
move_iterator::operator[] | Gibt (reference)*(*this + off) zurück. Ermöglicht es Ihnen, ein Offset von der aktuellen Basisklasse anzugeben, um den Wert an diesem Speicherort abzurufen. |
move_iterator::operator+ | Gibt move_iterator(*this) += den Wert zurück. Ermöglicht es Ihnen, ein Offset zur Basisklasse hinzuzufügen, um den Wert an diesem Speicherort abzurufen. |
move_iterator::operator+= | Fügt dem Wert auf der rechten Seite dem gespeicherten Iterator hinzu und gibt *this zurück. |
move_iterator::operator-= | Subtrahiert den Wert auf der rechten Seite vom gespeicherten Iterator und gibt *this zurück. |
Anforderungen
Header:<iterator>
Namespace: std
move_iterator::base
Gibt den gespeicherten Iterator für diesen move_iterator
zurück.
RandomIterator base() const;
Hinweise
Die Memberfunktion gibt den gespeicherten Iterator zurück.
move_iterator::difference_type
Der Typ difference_type
basiert move_iterator
typedef
auf der Iteratoreigenschaft difference_type
und kann austauschbar mit ihr verwendet werden.
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
Hinweise
Der Type ist ein Synonym für das Iteratormerkmal typename iterator_traits<RandomIterator>::pointer
.
move_iterator::iterator_category
Der Typ iterator_category
basiert move_iterator
typedef
auf der Iteratoreigenschaft iterator_category
und kann austauschbar mit ihr verwendet werden.
typedef typename iterator_traits<RandomIterator>::iterator_category iterator_category;
Hinweise
Der Type ist ein Synonym für das Iteratormerkmal typename iterator_traits<RandomIterator>::iterator_category
.
move_iterator::iterator_type
Der Typ iterator_type
basiert auf dem Vorlagenparameter RandomIterator
für die Klassenvorlage move_iterator
und ist mit diesem wechselseitig austauschbar.
typedef RandomIterator iterator_type;
Hinweise
Der Type stellt ein Synonym für den Vorlagenparameter RandomIterator
dar.
move_iterator::move_iterator
Erstellt einen Verschiebeiterator. Verwendet den Parameter als den gespeicherten Iterator.
move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);
Parameter
right
Der Iterator, der als gespeicherter Iterator verwendet werden soll.
Hinweise
Der erste Konstruktor initialisiert den gespeicherten Iterator mit seinem Standardkonstruktor. Die übrigen Konstruktoren initialisieren mit den gespeicherten Iterator mit base.base()
.
move_iterator::operator+=
Fügt dem gespeicherten Iterator einen Offset hinzu, sodass der gespeicherte Iterator auf das Element an der neuen aktuellen Position zeigt. Anschließend verschiebt der Operator das neue aktuelle Element.
move_iterator& operator+=(difference_type _Off);
Parameter
_Aus
Ein Offset, der zur aktuellen Position hinzugefügt wird, um die neue Position zu bestimmen.
Rückgabewert
Gibt das neue aktuelle Element zurück.
Hinweise
Der Operator fügt dem gespeicherten Iterator _Off hinzu. Danach gibt er *this
zurück.
move_iterator::operator-=
Wechselt über eine angegebene Anzahl von vorherigen Elementen. Dieser Operator subtrahiert einen Offset vom gespeicherten Iterator.
move_iterator& operator-=(difference_type _Off);
Parameter
Hinweise
Der Operator wertet *this += -_Off
aus. Danach gibt er *this
zurück.
move_iterator::operator++
Erhöht den gespeicherten Iterator, der zu diesem move_iterator
Gehört. Auf das aktuelle Element wird vom Postincrement-Operator zugegriffen. Auf das nächste Element wird durch den preincrement-Operator zugegriffen.
move_iterator& operator++();
move_iterator operator++(int);
Parameter
Hinweise
Der erste (preincrement-) Operator erhöht den gespeicherten Iterator. Danach gibt er *this
zurück.
Der zweite (postincrement-)Operator erstellt eine Kopie von *this
und wertet ++*this
aus. Anschließend gibt er die Kopie zurück.
move_iterator::operator+
Gibt die Iteratorposition an, die um eine beliebigen Anzahl von Elementen vorgerückt ist.
move_iterator operator+(difference_type _Off) const;
Parameter
Hinweise
Der Operator gibt zurück move_iterator(*this) +=
_Off
.
move_iterator::operator[]
Erlaubt dem Arrayindex Zugriff auf Elemente im gesamten Bereich des move iterator
.
reference operator[](difference_type _Off) const;
Parameter
Hinweise
Der Operator gibt (reference)*(*this + _Off)
zurück.
move_iterator::operator--
Prä- und Postdekrement-Memberoperatoren führen ein Dekrement für den gespeicherten Iterator aus.
move_iterator& operator--();
move_iterator operator--();
Parameter
Hinweise
Der erste Memberoperator (Prädekrement) dekrementiert den gespeicherten Iterator. Danach gibt er *this
zurück.
Der zweite Operator (Postdekrement, Dekrement in Postfix-Notation) erstellt eine Kopie von *this
und berechnet dann --*this
. Anschließend gibt er die Kopie zurück.
move_iterator::operator-
Dekrementiert den gespeicherten Iterator und gibt den gekennzeichneten Wert zurück.
move_iterator operator-(difference_type _Off) const;
Parameter
Hinweise
Der Operator gibt move_iterator(*this) -= _Off
zurück.
move_iterator::operator*
Dereferenziert den gespeicherten Iterator und gibt den Wert zurück. Dies verhält sich wie eine rvalue reference
und führt eine Verschiebezuordnung aus. Der Operator überträgt das aktuelle Element aus dem Basisiterator heraus. Das darauf folgende Element wird das neue aktuelle Element.
reference operator*() const;
Hinweise
Der Operator gibt (reference)*base()
zurück.
move_iterator::operator->
Wie bei einem normalen RandomIterator
operator->
Element bietet es Zugriff auf die Felder, die zum aktuellen Element gehören.
pointer operator->() const;
Hinweise
Der Operator gibt &**this
zurück.
move_iterator::pointer
Der Typ pointer
ist ein typedef
basierend auf dem Zufallsiterator RandomIterator
für move_iterator
und kann austauschbar mit ihm verwendet werden.
typedef RandomIterator pointer;
Hinweise
Der Typ ist ein Synonym für RandomIterator
.
move_iterator::reference
Der Typ reference
ist ein typedef
basierend auf value_type&&
für move_iterator
, und ist austauschbar mit value_type&&
.
typedef value_type&& reference;
Hinweise
Der Typ ist ein Synonym für value_type&&
, der ein Rvalue-Verweis ist.
move_iterator::value_type
Der Typ value_type
basiert move_iterator
typedef
auf der Iteratoreigenschaft value_type
und kann austauschbar mit ihr verwendet werden.
typedef typename iterator_traits<RandomIterator>::value_type value_type;
Hinweise
Der Type ist ein Synonym für das Iteratormerkmal typename iterator_traits<RandomIterator>::value_type
.
Siehe auch
<iterator>
Lvalues and Rvalues (Lvalues und Rvalues)
Bewegungskonstruktoren und Bewegungszuweisungsoperatoren (C++)
C++-Standardbibliotheksreferenz