<iterator>

Definiert vordefinierte Iteratoren und Stream iteratoren, Iteratorgrundtypen und unterstützende Vorlagen.

Anforderungen

Header<iterator>:

Namespace:std

Hinweise

Iteratoren sind eine Generalisierung von Zeigern, mit denen ein C++-Programm auf einheitliche Weise mit verschiedenen Datenstrukturen arbeiten kann. Anstatt auf bestimmten Datentypen zu arbeiten, arbeiten Algorithmen auf einem Bereich von Werten, wie durch eine Art Iterator angegeben. Algorithmen können auf jeder Datenstruktur arbeiten, die den Anforderungen des Iterators entspricht.

In C++20 gibt es sechs Kategorien von Iteratoren. Iteratoren werden in einer Funktionshierarchie angeordnet. Ihre Funktionen werden durch C++20-Konzepte angegeben. Eine Beschreibung der verschiedenen Iteratoren und ihrer Funktionen finden Sie unter Iterator-Konzepte

Visual Studio hat Erweiterungen zu C++-Standardbibliotheks-Iteratoren hinzugefügt, um das Debuggen für aktivierte und deaktivierte Iteratoren zu unterstützen. Weitere Informationen finden Sie unter Sichere Bibliotheken: C++-Standardbibliothek.

Member

Funktionen

Name Beschreibung
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 schreibgeschützten Iterator zum ersten Element in einem angegebenen Container ab.
cend Ruft einen schreibgeschützten Iterator für das Element ab, das dem letzten Element im angegebenen Container folgt.
crbegin Rufen Sie einen schreibgeschützten Iterator am Anfang des angegebenen Containers ab.
crend Rufen Sie den Sentinel am Ende der crbegin() Rückgabe ab.
data Rufen Sie einen Zeiger auf das erste Element im angegebenen Container ab.
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.
empty Testen Sie, ob der angegebene Container leer ist.
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 eine checked_array_iterator , die von anderen Algorithmen verwendet werden kann. Hinweis: Bei dieser Funktion handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek. Code, der mithilfe dieser Funktion implementiert wird, ist nicht portierbar in C++-Standardbuildumgebungen, die diese 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 , das von anderen Algorithmen verwendet werden kann. Hinweis: Bei dieser Funktion handelt es sich um eine Microsoft-Erweiterung der C++-Standardbibliothek. Code, der mithilfe dieser Funktion implementiert wird, ist nicht portierbar in C++-Standardbuildumgebungen, die diese 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.
rbegin Rufen Sie einen Umgekehrten Iterator zum Anfang des angegebenen Containers ab.
rend Rufen Sie am Ende des angegebenen Containers einen Umgekehrten Iterator zum Sentinel ab.
size Ruft die Anzahl der Elemente ab.

Operatoren

Name Beschreibung
operator!= Testet, ob das Iteratorobjekt auf der linken Seite des Operators nicht dem Iteratorobjekt auf der rechten Seite entspricht.
operator== Testet, ob das Iterator-Objekt links vom Operator gleich dem Iterator-Objekt rechts vom Operator ist.
operator< 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> 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

name Beschreibung
back_insert_iterator Die Klassenvorlage beschreibt ein Ausgabe iterator-Objekt. Es fügt Elemente in einen Container vom Typ Containerein, auf den sie über das geschützte pointer Objekt zugreift, das es als Container speichert.
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. Code, der mithilfe dieser Funktion implementiert wird, ist nicht portierbar in C++-Standardbuildumgebungen, die diese Microsoft-Erweiterung nicht unterstützen.
forward_iterator_tag Eine Klasse, die einen Rückgabetyp für eine iterator_category Funktion bereitstellt, die einen Weiterleitungs iterator darstellt.
front_insert_iterator Die Klassenvorlage beschreibt ein Ausgabe iterator-Objekt. Es fügt Elemente in einen Container vom Typ Containerein, auf den sie über das geschützte pointer Objekt zugreift, das es als Container speichert.
input_iterator_tag Eine Klasse, die einen Rückgabetyp für eine iterator_category Funktion bereitstellt, die einen Eingabe-Iterator darstellt.
insert_iterator Die Klassenvorlage beschreibt ein Ausgabe iterator-Objekt. Es fügt Elemente in einen Container vom Typ Containerein, auf den sie über das geschützte pointer Objekt zugreift, das es als Container speichert. Es speichert auch das geschützte iterator Objekt der Klasse Container::iterator, die aufgerufen wird iter.
istream_iterator Die Klassenvorlage beschreibt ein Eingabe iteratorobjekt. Es extrahiert Objekte der Klasse Ty aus einem Eingabedatenstrom, auf den er über ein objekt zugreift, auf das es gespeichert wird, vom Typ Zeiger auf basic_istream<Elem, Tr>.
istreambuf_iterator Die Klassenvorlage beschreibt ein Eingabe iteratorobjekt. Es fügt Elemente der Klasse Elem in einen Ausgabedatenstrompuffer ein, auf den sie über ein objekt zugreift, auf das sie gespeichert wird, von Typ pointer zu basic_streambuf<Elem, Tr>.
iterator Die Klassenvorlage 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 Klassenvorlage beschreibt ein Ausgabe iterator-Objekt. Es fügt Objekte der Klasse Type in einen Ausgabedatenstrom ein, auf den er über ein objekt zugreift, auf das es gespeichert wird, von Typ pointer zu basic_ostream<Elem, Tr>.
ostreambuf_iterator Die Klassenvorlage beschreibt ein Ausgabe iterator-Objekt. Es fügt Elemente der Klasse Elem in einen Ausgabedatenstrompuffer ein, auf den sie über ein objekt zugreift, auf das es gespeichert wird, vom Typ Zeiger auf basic_streambuf<Elem, Tr>.
output_iterator_tag Eine Klasse, die einen Rückgabetyp für iterator_category Die Funktion bereitstellt, die einen Ausgabe iterator darstellt.
random_access_iterator_tag Eine Klasse, die einen Rückgabetyp für iterator_category Die Funktion bereitstellt, die einen Iterator für zufälligen Zugriff darstellt.
reverse_iterator Die Klassenvorlage beschreibt ein Objekt, das sich wie ein Iterator mit wahlfreiem Zugriff verhält, nur umgekehrt.
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. Code, der mithilfe dieser Funktion implementiert wird, ist nicht portierbar in C++-Standardbuildumgebungen, die diese Microsoft-Erweiterung nicht unterstützen.

Konzepte

Die folgenden Konzepte werden im std Namespace definiert. Sie gelten für Iteratoren und beziehen sich auch auf die Iteratorkategorien für Bereiche, die in <ranges> Konzepten beschrieben werden.

Iterator-Konzept Beschreibung
bidirectional_iteratorC++20 Gibt einen Iterator an, der vorwärts und rückwärts lesen und schreiben kann.
contiguous_iteratorC++20 Gibt einen Iterator an, dessen Elemente im Arbeitsspeicher sequenziell sind, dieselbe Größe und kann mithilfe von Zeigerarithmetik aufgerufen werden.
forward_iteratorC++20 Gibt einen Iterator an, der mehrmals lesen (und möglicherweise schreiben) kann.
input_iteratorC++20 Gibt einen Iterator an, den Sie mindestens einmal lesen können.
input_or_output_iteratorC++20 Die Grundlage der Iteratorkonzepttaxonomie.
output_iterator Gibt einen Iterator an, in den Sie schreiben können.
random_access_iteratorC++20 Gibt einen Iterator an, den Sie nach Index lesen und schreiben können.
sentinel_forC++20 Gibt einen Sentinel für einen Iteratortyp an.
sized_sentinel_forC++20 Gibt an, dass ein Iterator und sein Sentinel subtrahiert werden können (mithilfe von -) um ihre Differenz in konstanter Zeit zu finden.

Siehe auch

Headerdateienreferenz
Threadsicherheit in der C++-Standardbibliothek
C++-Standardbibliotheksreferenz