Freigeben über


<iterator>

Definiert die primitiven Elemente von Iteratoren, vordefinierte Iteratoren sowie Stream-Iteratoren sowie einige unterstützende Vorlagen. Die vordefinierten Iteratoren beinhalten Insert- und Reverse-Adapter. Es gibt drei Klassen von Insert-Adaptern für Iteratoren: Front, Back und General. Sie bieten Einfügesemantik anstelle der Semantik zum Überschreiben, die von Iteratoren der Memberfunktion des Containers bereitgestellt wird.

#include <iterator>

Hinweise

Iteratoren sind eine Verallgemeinerung von Zeigern. Die Anforderungen werden so abstrahiert, dass ein C++-Programm mit unterschiedlichen Datenstrukturen einheitlich arbeiten kann. Iteratoren dienen als Vermittler zwischen Containern und allgemeinen Algorithmen. Algorithmen sind nicht für bestimmte Datentypen definiert, sondern für Bereiche, die durch den Iterator-Typ festgelegt sind. Der Algorithmus funktioniert dann für jede Datenstruktur, die den Anforderungen des Iterators entspricht. Es wird zwischen fünf Typen oder Kategorien von Iteratoren mit jeweils eigenen Anforderungen und Funktionen unterschieden:

  • Output: Kann vorwärts bewegt werden, Werte speichern, aber nicht abrufen, und wird von ostream und inserter bereitgestellt.

  • Input: Kann vorwärts bewegt werden, Werte abrufen, aber nicht speichern, und wird von istream bereitgestellt.

  • Forward: Kann vorwärts bewegt werden und Werte speichern sowie abrufen.

  • Bidirektional: Kann vorwärts und rückwärts bewegt werden, Werte speichern und abrufen, und wird durch List, Set, Multiset, Map und Multimap bereitgestellt.

  • Random-Access: Auf Elemente wird in beliebiger Reihenfolge zugegriffen, Werte können gespeichert und abgerufen werden, wird durch Vector, Deque, String und Array bereitgestellt.

Iteratoren mit höheren Anforderungen und besserem Zugriff auf Elemente können anstelle von Iteratoren mit geringeren Anforderungen verwendet werden. Wird beispielsweise ein Forward-Iterator aufgerufen, kann stattdessen auch ein Random-Access-Iterator verwendet werden.

Visual Studio besitzt zusätzliche Erweiterungen für C++-Standardbibliotheksiteratoren, um eine Vielzahl von Debugmodussituationen für aktivierte und nicht aktivierte Iteratoren zu unterstützen. Weitere Informationen finden Sie unter Sichere Bibliotheken: C++-Standardbibliothek.

Funktionen

advance

Damit kann ein Iterator um eine bestimmte Anzahl von Positionen vorwärts verschoben werden.

back_inserter

Damit wird ein Iterator erstellt, mit dem Elemente an das Ende eines bestimmten Containers eingefügt werden können.

begin

Ruft einen Iterator für das erste Element in einem angegebenen Container ab.

cbegin

Ruft einen konstanten Iterator für das erste Element in einem angegebenen Container ab.

cend

Ruft einen konstanten Iterator für das Element ab, das auf das letzte Element im angegebenen Container folgt.

distance

Bestimmt die Anzahl von Inkrementen zwischen den durch zwei Iteratoren festgelegten Positionen.

end

Ruft einen Iterator für das Element ab, das auf das letzte Element im angegebenen Container folgt.

front_inserter

Damit wird ein Iterator erstellt, mit dem Elemente an den Anfang eines bestimmten Containers eingefügt werden können.

Inserter

Ein Iterator-Adapter, mit dem einem Container an einem bestimmten Punkt ein neues Element hinzugefügt wird.

make_checked_array_iterator

Erstellt ein checked_array_iterator-Objekt, das von anderen Algorithmen verwendet werden kann.

Hinweis

Bei dieser Funktion handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek.Der Code, der mit dieser Funktion implementiert wird, ist nicht auf C++-Standardbuildumgebungen übertragbar, die die Microsoft-Erweiterung nicht unterstützen.

make_move_iterator

Gibt einen Move-Iterator zurück, der den bereitgestellten Iterator als gespeicherten Basis-Iterator enthält.

make_unchecked_array_iterator

Erstellt ein unchecked_array_iterator-Objekt, das von anderen Algorithmen verwendet werden kann.

Hinweis

Bei dieser Funktion handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek.Der Code, der mit dieser Funktion implementiert wird, ist nicht auf C++-Standardbuildumgebungen übertragbar, die die Microsoft-Erweiterung nicht unterstützen.

next

Führt eine bestimmte Anzahl von Iterationen aus und gibt die neue Position des Iterators zurück.

prev

Führt eine bestimmte Anzahl von Iterationen rückwärts aus und gibt die neue Position des Iterators zurück.

Operatoren

operator!=

Testet, ob das Iterator-Objekt links vom Operator ungleich dem Iterator-Objekt rechts vom Operator ist.

operator==

Testet, ob das Iterator-Objekt links vom Operator gleich dem Iterator-Objekt rechts vom Operator ist.

Operator implementiert.<

Testet, ob das Iterator-Objekt links vom Operator kleiner ist als das Iterator-Objekt rechts vom Operator.

operator<=

Testet, ob das Iterator-Objekt links vom Operator kleiner als oder gleich dem Iterator-Objekt rechts vom Operator ist.

Operator implementiert.>

Testet, ob das Iterator-Objekt links vom Operator größer als das Iterator-Objekt rechts vom Operator ist.

operator>=

Testet, ob das Iterator-Objekt links vom Operator größer als oder gleich dem Iterator-Objekt rechts vom Operator ist.

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-

Subtrahiert einen Iterator von einem anderen und gibt die Differenz zurück.

Klassen

back_insert_iterator

Die Vorlagenklasse beschreibt einen Output-Iterator. Es werden Elemente in einen Container des Typs Container eingefügt, auf den über das geschützte Zeiger-Objekt zugegriffen wird (Container).

bidirectional_iterator_tag

Eine Klasse, die einen Rückgabetyp für eine iterator_category-Funktion bereitstellt, die einen bidirektionalen Iterator darstellt.

checked_array_iterator

Eine Klasse, die auf ein Array mit einem Iterator vom Typ "Random-Access, Checked" zugreift.

Hinweis

Bei dieser Klasse handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek.Der Code, der mit dieser Funktion implementiert wird, ist nicht auf C++-Standardbuildumgebungen übertragbar, die die Microsoft-Erweiterung nicht unterstützen.

forward_iterator_tag

Eine Klasse, die einen Rückgabetyp für eine iterator_category-Funktion bereitstellt, die einen Forward-Iterator darstellt.

front_insert_iterator

Die Vorlagenklasse beschreibt einen Output-Iterator. Es werden Elemente in einen Container des Typs Container eingefügt, auf den über das geschützte Zeiger-Objekt zugegriffen wird (Container).

input_iterator_tag

Eine Klasse, die einen Rückgabetyp für eine iterator_category-Funktion bereitstellt, die einen Input-Iterator darstellt.

insert_iterator

Die Vorlagenklasse beschreibt einen Output-Iterator. Es werden Elemente in einen Container des Typs Container eingefügt, auf den über das geschützte Zeiger-Objekt zugegriffen wird (Container). Gespeichert wird außerdem das geschützte Iterator-Objekt der Klasse Container::iterator namens iter.

istream_iterator

Die Vorlagenklasse beschreibt einen Input-Iterator. Es werden Objekte der Klasse Ty von einem Input-Stream extrahiert. Der Zugriff darauf erfolgt durch ein gespeichertes Objekt des Typs Zeiger zu basic_istream<Elem, Tr>.

istreambuf_iterator

Die Vorlagenklasse beschreibt einen Input-Iterator. Elemente der Klasse Elem werden in einen Ausgabestreampuffer eingefügt. Der Zugriff darauf erfolgt durch ein gespeichertes Objekt des Typs Zeiger zu basic_streambuf<Elem, Tr>.

Iterator

Die Vorlagenklasse wird als Basistyp für alle Iteratoren verwendet.

iterator_traits

Eine Hilfsklasse für Vorlagen, die wichtige Typen bereitstellt, die mit verschiedenen Iterator-Typen verknüpft sind, damit die Verweise auf dieselbe Weise funktionieren.

move_iterator

Ein move_iterator-Objekt speichert einen Random-Access-Iterator des Typs RandomIterator. Es verhält sich wie ein Rand-Access-Iterator, außer bei einer Dereferenzierung. Das Ergebnis von operator* wird implizit umgewandelt in value_type&&:, um rvalue reference zu erhalten.

ostream_iterator

Die Vorlagenklasse beschreibt einen Output-Iterator. Objekte der Klasse Type werden in einen Ausgabestream eingefügt. Der Zugriff darauf erfolgt durch ein gespeichertes Objekt des Typs Zeiger zu basic_ostream<Elem, Tr>.

ostreambuf_iterator Class

Die Vorlagenklasse beschreibt einen Output-Iterator. Elemente der Klasse Elem werden in einen Ausgabestreampuffer eingefügt. Der Zugriff darauf erfolgt durch ein gespeichertes Objekt des Typs Zeiger zu basic_streambuf<Elem, Tr>.

output_iterator_tag

Eine Klasse, die einen Rückgabetyp für eine iterator_category-Funktion bereitstellt, die einen Output-Iterator darstellt.

random_access_iterator_tag

Eine Klasse, die einen Rückgabetyp für eine iterator_category-Funktion bereitstellt, die einen Random-Access-Iterator darstellt.

reverse_iterator

Die Vorlagenklasse beschreibt ein Objekt, das sich wie ein Random-Access-Iterator verhält, nur in umgekehrter Reihenfolge.

unchecked_array_iterator

Eine Klasse, die auf ein Array mit einem Iterator vom Typ "Random-Access, Unchecked" zugreift.

Hinweis

Bei dieser Klasse handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek.Der Code, der mit dieser Funktion implementiert wird, ist nicht auf C++-Standardbuildumgebungen übertragbar, die die Microsoft-Erweiterung nicht unterstützen.

Siehe auch

Referenz

Threadsicherheit in der C++-Standardbibliothek

Standardvorlagenbibliothek

Weitere Ressourcen

Headerdateien der C++-Standardbibliothek