Share via


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 ist ein move_iteratortypedef basierend auf dem Iteratormerkmal difference_type und kann austauschbar mit ihm 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 ist ein move_iteratortypedef basierend auf dem Iteratormerkmal iterator_category und kann austauschbar mit ihm 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 move_iterator(*this) +=_Off zurück.

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 ein normaler RandomIteratoroperator-> bietet dieser Operator 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 ist ein move_iteratortypedef basierend auf dem Iteratormerkmal value_type und kann austauschbar mit ihm 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.

Weitere Informationen

<iterator>
Lvalues and Rvalues (Lvalues und Rvalues)
Bewegungskonstruktoren und Bewegungszuweisungsoperatoren (C++)
C++-Standardbibliotheksreferenz