move_iterator Class
Klassenvorlage move_iterator ist ein Wrapper für einen Iterator.Das move_iterator stellt dasselbe Verhalten, das der Iterator es (Speicher) umschließt, außer es des gespeicherten Iterators dereferenziert Operator in einen rvalu-Verweis gedreht und eine Kopie zu eine Verschiebung macht.Weitere Informationen zu Rvalue, finden Sie unter Rvalu-Verweis-Deklarator: &&.
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 wie ein Iterator außer verhält, wenn es dereferenziert wird.Sie speichert einen Iterator mit wahlfreier Zugriff des Typs Iterator zugegriffen, über die Memberfunktion base().Alle Vorgänge auf move_iterator werden direkt auf dem gespeicherten Iterator ausgeführt, außer dass das Ergebnis operator* wird implizit auf value_type&& umgewandelt, um einen rvalu-Verweis auszuführen.
move_iterator kann für den Vorgängen enthalten, die nicht von den umschlossenen Iterator definiert werden.Diese Operationen sollten nicht verwendet werden.
Konstruktoren
Der Konstruktor für Objekte des Typs move_iterator. |
Typedefs
Ein Synonym für den Vorlagenparameter RandomIterator. |
|
Ein Synonym für einen längeren typename Ausdruck des gleichen Namens, iterator_category identifiziert die allgemeinen Fähigkeiten des Iterators. |
|
Ein Synonym für einen längeren typename Ausdruck des gleichen Namens, value_type beschreibt, welcher Typ die Iteratorelemente sind. |
|
Ein Synonym für einen längeren typename Ausdruck des gleichen Namens, difference_type beschreibt den ganzzahligen Typ, der erforderlich ist, um Unterschiedwerte zwischen Elementen auszudrücken. |
|
Ein Synonym für Vorlagenparameter RandomIterator. |
|
Ein Synonym als rvalue Verweis value_type&&. |
Memberfunktionen
Die Memberfunktion gibt den gespeicherten Iterator zurück, der durch dieses move_iterator umschlossen wird. |
Operatoren
Gibt (reference)*base(). zurück |
|
Inkrementiert gespeicherten Iterator.Genaues Verhalten hängt davon ab, ob es ein sowohl Präinkrement- oder ein Postinkrementvorgang ist. |
|
Dekrementiert gespeicherten Iterator.Genaues Verhalten hängt davon ab, ob es ein Prädekrement oder ein Postdekrementvorgang ist. |
|
Gibt &**this zurück. |
|
Gibt move_iterator(*this) -= zurück, indem den rechten Wert von der aktuellen Position zuerst entfernen. |
|
Gibt (reference)*(*this + off) zurück.Ermöglicht es Ihnen, einen Offset von der aktuellen Basis anzugeben, den Wert an diesem Speicherort abzurufen. |
|
Gibt move_iterator(*this) += der Wert zurück.Ermöglicht es Ihnen, einen Offset zur Basis hinzuzufügen, den Wert an diesem Speicherort abzurufen. |
|
Fügt den rechten Wert dem gespeicherten Iterator hinzu und gibt *this zurück. |
|
Subtrahiert den rechten Wert vom gespeicherten Iterator und gibt *this zurück. |
Anforderungen
Header: <iterator>
Namespace: std
Siehe auch
Aufgaben
Gewusst wie: Schreiben Sie einen Verschiebungskonstruktor