Freigeben über


reverse_iterator-Klasse

Die Vorlagenklasse ist ein Iteratoradapter, der ein Reverse-Iterator-Objekt beschreibt, das sich wie ein Random-Access- oder ein bidirektionaler Iterator verhält, nur umgekehrt. Er ermöglicht es, einen Bereich rückwärts zu durchlaufen.

template <class RandomIterator>
class reverse_iterator

Parameter

  • RandomIterator
    Der Typ, der den Iterator darstellt, der angepasst werden muss, um rückwärts zu funktionieren.

Hinweise

Vorhandene Standardvorlagenbibliothekscontainer definieren auch die Typen reverse_iterator und const_reverse_iterator und verfügen über die Memberfunktionen rbegin und rend, die Reverse-Iteratoren zurückgeben. Diese Iteratoren verfügen über Semantik zum Überschreiben. Der reverse_iterator-Adapter ergänzt diese Funktionalität durch Einfügesemantik und kann außerdem mit Streams verwendet werden.

Die reverse_iterator-Objekte, die einen bidirektionalen Iterator erfordern, dürfen keine der Memberfunktionen operator+=, operator+, operator-=, operator- oder operator[] aufrufen, die nur mit Random-Access-Iteratoren verwendet werden dürfen.

Wenn der Bereich eines Iterators [_First, _Last) ist, gibt die eckige Klammer links den Einschluss von _First und die Klammer rechts den Einschluss von Elementen bis zu __Left an, ohne jedoch _Left selbst einzubeziehen. Die gleichen Elemente sind in der umgekehrten Sequenz [rev – _First, rev – _Left) enthalten. Wenn _Left ein Element hinter dem Ende einer Sequenz ist, dann zeigt das erste Element rev – _First in der umgekehrten Sequenz auf *(_Left – 1 ). Die Identität, die alle umgekehrten Iteratoren auf die zugrunde liegenden Iteratoren bezieht:

&*(reverse_iterator ( i ) ) == &*( i – 1 ).

In der Praxis bedeutet dies, dass in der umgekehrten Sequenz das reverse_iterator-Objekt auf das Element verweist, das eine Position hinter dem Element (rechts davon) liegt, auf das der Iterator in der ursprünglichen Sequenz verwiesen hat. Wenn ein Iterator das Element 6 in der Sequenz adressierte (2, 4, 6, 8), dann adressiert reverse_iterator das Element 4 in der umgekehrten Sequenz (8, 6, 4, 2).

Konstruktoren

reverse_iterator

Erstellt aus einem zugrunde liegenden Iterator einen standardmäßigen reverse_iterator oder reverse_iterator.

Typedefs

difference_type

Ein Typ, mit dem der Unterschied zwischen zwei reverse_iteratoren bereitgestellt wird, die auf Elemente innerhalb desselben Containers verweisen.

iterator_type

Ein Typ, der einen zugrunde liegenden Iterator für einen reverse_iterator bereitstellt.

pointer

Ein Typ, mit dem ein Zeiger auf ein Element bereitgestellt wird, die von reverse_iterator adressiert werden.

Verweis

Ein Typ, mit dem ein Verweis auf ein Element bereitgestellt wird, die von reverse_iterator adressiert werden.

Memberfunktionen

base

Stellt den zugrunde liegenden Iterator aus reverse_iterator wieder her.

Operators

operator*

Gibt das Element zurück, das ein reverse_iterator adressiert.

operator+

Fügt einen Offset zu einem Iterator hinzu und gibt den neuen reverse_iterator zurück, der auf das eingefügte Element an der neuen Offsetposition zeigt.

operator++

Erhöht reverse_iterator zum nächsten Element.

Operator+=

Fügt einen angegebenen Offset aus einem reverse_iterator hinzu.

operator-

Subtrahiert einen Offset von einem reverse_iterator und gibt einen reverse_iterator zurück, der das Element an die Offsetposition adressiert.

Operator--

Verringert reverse_iterator zum vorherigen Element.

Operator-=

Subtrahiert einen angegebenen Offset von einem reverse_iterator.

Operator->

Gibt einen Zeiger auf das Element zurück, das von reverse_iterator adressiert wird.

operator[]

Gibt einen Verweis auf ein Elementoffset aus dem Element zurück, das von reverse_iterator mithilfe der angegebenen Anzahl von Positionen adressiert wird.

Anforderungen

Header: <Iterator>

Namespace: std

Siehe auch

Referenz

<iterator>

Threadsicherheit in der C++-Standardbibliothek

Standardvorlagenbibliothek