Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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_typeund 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_categoryund 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 RandomIteratordar.
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_iteratorGehö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_typeund 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