<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
Functions
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 Container ein, 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 Container ein, 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 Container ein, 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_iterator C++20 |
Gibt einen Iterator an, der vorwärts und rückwärts lesen und schreiben kann. |
contiguous_iterator C++20 |
Gibt einen Iterator an, dessen Elemente im Arbeitsspeicher sequenziell sind, dieselbe Größe und kann mithilfe von Zeigerarithmetik aufgerufen werden. |
forward_iterator C++20 |
Gibt einen Iterator an, der mehrmals lesen (und möglicherweise schreiben) kann. |
input_iterator C++20 |
Gibt einen Iterator an, den Sie mindestens einmal lesen können. |
input_or_output_iterator C++20 |
Die Grundlage der Iteratorkonzepttaxonomie. |
output_iterator |
Gibt einen Iterator an, in den Sie schreiben können. |
random_access_iterator C++20 |
Gibt einen Iterator an, den Sie nach Index lesen und schreiben können. |
sentinel_for C++20 |
Gibt einen Sentinel für einen Iteratortyp an. |
sized_sentinel_for C++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