Die Containers-Bibliothek ist eine generische Sammlung von Klassentemplates und Algorithmen, die es Programmierern ermöglicht, gängige Datenstrukturen wie Warteschlangen, Listen und Stapel einfach zu implementieren. Es gibt
zwei
(until C++11)
drei
(since C++11)
Klassen von Containern:
-
Sequenzcontainer,
-
Assoziative Container,
-
Ungeordnete assoziative Container,
|
(seit C++11)
|
von denen jede entwickelt wurde, um einen unterschiedlichen Satz von Operationen zu unterstützen.
Der Container verwaltet den Speicherplatz, der für seine Elemente alloziert ist, und stellt Member-Funktionen bereit, um darauf zuzugreifen, entweder direkt oder durch Iteratoren (Objekte mit Eigenschaften ähnlich Zeigern).
Die meisten Container haben mindestens mehrere Memberfunktionen gemeinsam und teilen Funktionalitäten. Welcher Container für eine bestimmte Anwendung am besten geeignet ist, hängt nicht nur von der angebotenen Funktionalität ab, sondern auch von seiner Effizienz für verschiedene Arbeitslasten.
Sequenzcontainer
Sequenzcontainer implementieren Datenstrukturen, die sequenziell abgerufen werden können.
|
|
Festgroße Inplace-Contiguous-Array
(Klassentemplate)
|
|
|
Veränderbare Contiguous-Array
(Klassentemplate)
|
|
|
Veränderbare, feste Kapazität, Inplace-Contiguous-Array
(Klassentemplate)
|
|
|
Sammlung, die Speicher gelöschter Elemente wiederverwendet
(Klassentemplate)
|
|
|
Doppelendige Warteschlange
(Klassentemplate)
|
|
|
Einfach verknüpfte Liste
(Klassentemplate)
|
|
|
Doppelt verknüpfte Liste
(Klassentemplate)
|
Assoziative Container
Assoziative Container implementieren sortierte Datenstrukturen, die schnell durchsucht werden können (
O(log n)
Komplexität).
|
|
Sammlung eindeutiger Schlüssel, sortiert nach Schlüsseln
(Klassen-Template)
|
|
|
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, Schlüssel sind eindeutig
(Klassen-Template)
|
|
|
Sammlung von Schlüsseln, sortiert nach Schlüsseln
(Klassen-Template)
|
|
|
Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln
(Klassen-Template)
|
Ungeordnete assoziative Container
(since C++11)
Ungeordnete assoziative Container implementieren ungeordnete (gehashte) Datenstrukturen, die schnell durchsucht werden können (
O(1)
durchschnittlich,
O(n)
Worst-Case-Komplexität).
|
|
Sammlung eindeutiger Schlüssel, gehasht nach Schlüsseln
(Klassentemplate)
|
|
|
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln, Schlüssel sind eindeutig
(Klassentemplate)
|
|
|
Sammlung von Schlüsseln, gehasht nach Schlüsseln
(Klassentemplate)
|
|
|
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln
(Klassentemplate)
|
Container-Adapter
Container-Adaptoren bieten eine andere Schnittstelle für sequentielle Container.
|
|
passt einen Container an, um einen Stack (LIFO-Datenstruktur) bereitzustellen
(Klassentemplate)
|
|
|
passt einen Container an, um eine Warteschlange (FIFO-Datenstruktur) bereitzustellen
(Klassentemplate)
|
|
|
passt einen Container an, um eine Prioritätswarteschlange bereitzustellen
(Klassentemplate)
|
|
|
passt einen Container an, um eine Sammlung eindeutiger Schlüssel, sortiert nach Schlüsseln, bereitzustellen
(Klassentemplate)
|
|
|
passt zwei Container an, um eine Sammlung von Schlüssel-Wert-Paaren, sortiert nach eindeutigen Schlüsseln, bereitzustellen
(Klassentemplate)
|
|
|
passt einen Container an, um eine Sammlung von Schlüsseln, sortiert nach Schlüsseln, bereitzustellen
(Klassentemplate)
|
|
|
passt zwei Container an, um eine Sammlung von Schlüssel-Wert-Paaren, sortiert nach Schlüsseln, bereitzustellen
(Klassentemplate)
|
Views
(seit C++20)
Views bieten flexible Möglichkeiten zur Interaktion mit ein- oder mehrdimensionalen Ansichten über ein nicht-besitzendes Array von Elementen.
|
|
eine nicht-besitzende Ansicht über eine zusammenhängende Objektsequenz
(Klassentemplate)
|
|
|
eine mehrdimensionale nicht-besitzende Array-Ansicht
(Klassentemplate)
|
Iterator-Invalidierung
Schreibgeschützte Methoden machen Iteratoren oder Referenzen niemals
ungültig
. Methoden, die den Inhalt eines Containers verändern, können Iteratoren und/oder Referenzen ungültig machen, wie in dieser Tabelle zusammengefasst.
|
Kategorie
|
Container
|
Nach
Einfügung
sind...
|
Nach
Löschung
sind...
|
Bedingt
|
|
Iteratoren
gültig?
|
Referenzen
gültig?
|
Iteratoren
gültig?
|
Referenzen
gültig?
|
|
Sequenz-Container
|
array
|
N/A
|
N/A
|
|
|
vector
|
Nein
|
N/A
|
Einfügung änderte Kapazität
|
|
Ja
|
Ja
|
Vor modifiziertem Element(en)
(für Einfügung nur wenn Kapazität unverändert)
|
|
Nein
|
Nein
|
An oder nach modifiziertem Element(en)
|
|
deque
|
Nein
|
Ja
|
Ja, außer gelöschtem Element(en)
|
Erstes oder letztes Element modifiziert
|
|
Nein
|
Nein
|
Nur mittleres Element modifiziert
|
|
list
|
Ja
|
Ja, außer gelöschtem Element(en)
|
|
|
forward_list
|
Ja
|
Ja, außer gelöschtem Element(en)
|
|
|
Assoziative Container
|
set
multiset
map
multimap
|
Ja
|
Ja, außer gelöschtem Element(en)
|
|
|
Ungeordnete assoziative Container
|
unordered_set
unordered_multiset
unordered_map
unordered_multimap
|
Nein
|
Ja
|
N/A
|
Einfügung verursachte Rehash
|
|
Ja
|
Ja, außer gelöschtem Element(en)
|
Kein Rehash
|
Hier bezieht sich
insertion
auf jede Methode, die ein oder mehrere Elemente zum Container hinzufügt, und
erasure
auf jede Methode, die ein oder mehrere Elemente aus dem Container entfernt.
Sofern nicht anders angegeben (entweder explizit oder durch Definition einer Funktion in Bezug auf andere Funktionen), führt das Übergeben eines Containers als Argument an eine Bibliotheksfunktion niemals zur Ungültigkeit von Iteratoren oder zur Änderung der Werte von Objekten innerhalb dieses Containers.
Der Past-the-End-Iterator verdient besondere Erwähnung. Im Allgemeinen wird dieser Iterator ungültig, als ob es sich um einen normalen Iterator auf ein nicht gelöschtes Element handeln würde. Daher wird
std::set::end
niemals ungültig
,
std::unordered_set::end
wird nur bei Rehash ungültig
(since C++11)
,
std::vector::end
wird immer ungültig (da es sich immer nach den modifizierten Elementen befindet), und so weiter.
Es gibt eine Ausnahme: Ein Löschvorgang, der das letzte Element eines
std::deque
macht
den Past-the-End-Iterator ungültig, obwohl es sich nicht um ein gelöschtes Element des Containers handelt (oder überhaupt um ein Element). In Kombination mit den allgemeinen Regeln für
std::deque
Iteratoren ist das Endergebnis, dass die einzige modifizierende Operation, die
nicht
std::deque::end
ungültig macht, ein Löschvorgang ist, der das erste Element löscht, aber nicht das letzte.
Thread-Sicherheit
-
Alle Container-Funktionen können gleichzeitig von verschiedenen Threads auf verschiedenen Containern aufgerufen werden. Allgemeiner ausgedrückt: Die Funktionen der C++-Standardbibliothek lesen keine Objekte, auf die andere Threads zugreifen können, es sei denn, diese Objekte sind direkt oder indirekt über die Funktionsargumente (einschließlich des this-Zeigers) zugänglich.
-
Alle
const
-Memberfunktionen können gleichzeitig von verschiedenen Threads auf demselben Container aufgerufen werden. Zusätzlich verhalten sich die Memberfunktionen
begin()
,
end()
,
rbegin()
,
rend()
,
front()
,
back()
,
data()
,
find()
,
lower_bound()
,
upper_bound()
,
equal_range()
,
at()
und (außer in assoziativen Containern)
operator[]
im Sinne der Thread-Sicherheit wie
const
-Funktionen (d.h. sie können ebenfalls gleichzeitig von verschiedenen Threads auf demselben Container aufgerufen werden). Allgemeiner ausgedrückt: Die Funktionen der C++-Standardbibliothek modifizieren keine Objekte, es sei denn, diese Objekte sind direkt oder indirekt über die nicht-konstanten Argumente der Funktion (einschließlich des this-Zeigers) zugänglich.
-
Unterschiedliche Elemente desselben Containers können gleichzeitig von verschiedenen Threads modifiziert werden, mit Ausnahme der Elemente von
std::vector<bool>
(z.B. kann ein Vektor von
std::future
-Objekten Werte von mehreren Threads empfangen).
-
Iterator-Operationen (z.B. das Inkrementieren eines Iterators) lesen den zugrundeliegenden Container, modifizieren ihn aber nicht und können gleichzeitig mit Operationen an anderen Iteratoren desselben Containers, mit const-Memberfunktionen oder mit Lesezugriffen auf die Elemente ausgeführt werden. Container-Operationen, die Iteratoren ungültig machen, modifizieren den Container und können nicht gleichzeitig mit Operationen an bestehenden Iteratoren ausgeführt werden, selbst wenn diese Iteratoren nicht ungültig werden.
-
Elemente desselben Containers können gleichzeitig mit jenen Memberfunktionen modifiziert werden, die nicht spezifiziert sind, auf diese Elemente zuzugreifen. Allgemeiner ausgedrückt: Die Funktionen der C++-Standardbibliothek lesen keine indirekt über ihre Argumente zugänglichen Objekte (einschließlich anderer Elemente eines Containers), es sei denn, dies wird durch ihre Spezifikation erfordert.
-
In jedem Fall können Container-Operationen (sowie Algorithmen oder andere C++-Standardbibliotheksfunktionen) intern parallelisiert werden, solange dies die für den Benutzer sichtbaren Ergebnisse nicht verändert (z.B. kann
std::transform
parallelisiert werden, nicht jedoch
std::for_each
, das spezifiziert ist, um jedes Element einer Sequenz in Reihenfolge zu besuchen).
|
(seit C++11)
|
Funktionstabelle
Hinweis:
std::basic_string
wird vom Standard nicht als Container behandelt, verhält sich jedoch aufgrund seiner Ähnlichkeit weitgehend wie einer. Es wird hier der Übersichtlichkeit halber als 'Pseudo-Container' aufgeführt.
|
|
- Funktionen vorhanden in C++03
|
|
|
- Funktionen vorhanden seit C++11
|
|
|
- Funktionen vorhanden seit C++17
|
|
|
- Funktionen vorhanden seit C++20
|
|
|
- Funktionen vorhanden seit C++23
|
Member-Funktionstabelle
|
|
Pseudo-Container
|
Sequenzcontainer
|
Assoziative Container
|
Ungeordnete assoziative Container
|
Container-Adapter
|
|
|
Header
|
<string>
|
<array>
|
<vector>
|
<deque>
|
<forward_list>
|
<list>
|
<set>
|
<map>
|
<unordered_set>
|
<unordered_map>
|
<stack>
|
<queue>
|
<flat_set>
|
<flat_map>
|
Header
|
|
Container
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Container
|
|
|
|
|
(implizit)
|
|
|
|
|
|
|
|
|
|
|
|
|
**Erklärung:**
- Der C++-Spezifikationsterm `unordered_multimap` wurde nicht übersetzt
- HTML-Tags, Attribute und Formatierung bleiben unverändert
- Die Übersetzung folgt den technischen Übersetzungsrichtlinien für C++-Dokumentation
|
|
|
|
|
|
|
|
|
|
|
|
(implizit)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(implizit)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Iteratoren
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Iteratoren
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Elementzugriff
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Elementzugriff
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kapazität
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kapazität
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Übersetzungserklärung:**
- "capacity" wurde in den beiden äußeren Tabellenzellen als "Kapazität" übersetzt (deutsche Übersetzung für den allgemeinen Begriff)
- Die "capacity"-Einträge innerhalb der `
`-Tags wurden nicht übersetzt, da es sich um C++-spezifische Begriffe handelt
- Alle HTML-Tags, Attribute und Formatierungen wurden unverändert beibehalten
- Die leeren `
`-Tags wurden ebenfalls unverändert gelassen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Modifikatoren
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Modifikatoren
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Anmerkung:** Der Text "prepend_range" wurde nicht übersetzt, da es sich um einen C++-spezifischen Begriff handelt, der gemäß den Anweisungen unverändert bleiben sollte. Die HTML-Struktur, Tags und Attribute wurden vollständig beibehalten.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Anmerkung:** Da der gesamte Text in diesem HTML-Fragment C++-spezifische Begriffe (`push_back`, `push`) enthält und diese innerhalb von `
`-Tags (die als Code-ähnlich betrachtet werden können) stehen, wurde gemäß den Anweisungen kein Text übersetzt.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Listenoperationen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Listenoperationen
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Anmerkung:** Der Text "reverse" wurde nicht übersetzt, da es sich um einen C++-spezifischen Begriff handelt (Funktionsname in der Standardbibliothek). Alle HTML-Tags, Attribute und Formatierungen wurden unverändert beibehalten.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Anmerkung:** Der Text "sort" wurde nicht übersetzt, da es sich um einen C++-spezifischen Begriff handelt und innerhalb von `
`-Tags steht, die typischerweise für Code-Formatierung verwendet werden.
|
Bucket und Hash
|
|
begin(size_type)
|
|
cbegin(size_type)
|
|
|
|
|
|
|
|
|
|
|
|
|
begin(size_type)
|
|
cbegin(size_type)
|
|
|
begin(size_type)
|
|
cbegin(size_type)
|
|
|
begin(size_type)
|
|
cbegin(size_type)
|
|
|
begin(size_type)
|
|
cbegin(size_type)
|
|
|
|
|
|
|
|
|
|
begin(size_type)
|
|
cbegin(size_type)
|
|
Bucket und Hash
|
**Übersetzungsdetails:**
- "Bucket and Hash" wurde zu "Bucket und Hash" übersetzt
- Alle HTML-Tags, Attribute und Formatierung wurden beibehalten
- C++-spezifische Begriffe wie `begin(size_type)` und `cbegin(size_type)` wurden nicht übersetzt
- Leere `
`-Tags wurden unverändert gelassen
|
end(size_type)
|
|
cend(size_type)
|
|
|
|
|
|
|
|
|
|
|
|
|
end(size_type)
|
|
cend(size_type)
|
|
|
end(size_type)
|
|
cend(size_type)
|
|
|
end(size_type)
|
|
cend(size_type)
|
|
|
end(size_type)
|
|
cend(size_type)
|
|
|
|
|
|
|
|
|
|
end(size_type)
|
|
cend(size_type)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Suche
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Suche
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Beobachter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Beobachter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Allocator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Allocator
|
|
Adapter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Adapter
|
**Änderungen:**
- "Adaptors" → "Adapter" (deutsche Standardübersetzung für diesen technischen Begriff)
- Alle "extract"-Vorkommen bleiben unübersetzt (C++-spezifischer Begriff)
- HTML-Tags, Attribute und Formatierung wurden vollständig beibehalten
- Leere
-Tags wurden nicht modifiziert
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Container
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Container
|
|
Header
|
<string>
|
<array>
|
<vector>
|
<deque>
|
<forward_list>
|
<list>
|
<set>
|
<map>
|
<unordered_set>
|
<unordered_map>
|
<stack>
|
<queue>
|
<flat_set>
|
<flat_map>
|
Header
|
|
|
Pseudo-Container
|
Sequenzcontainer
|
Assoziative Container
|
Ungeordnete assoziative Container
|
Container-Adapter
|
|
-
Hinweis: Funktionen in zwei verschiedenen
extract
Zeilen haben unterschiedliche Bedeutungen und Syntax:
-
↑
z.B.,
node_type extract
(
const_iterator
)
oder
node_type extract
(
Key
&
)
-
↑
z.B.,
container_type extract
(
)
&&
Tabelle der Nicht-Mitgliedsfunktionen
|
|
Pseudo-Container
|
Sequenzcontainer
|
Assoziative Container
|
Ungeordnete assoziative Container
|
Container-Adapter
|
|
|
Header
|
<string>
|
<array>
|
<vector>
|
<deque>
|
<forward_list>
|
<list>
|
<set>
|
<map>
|
<unordered_set>
|
<unordered_map>
|
<stack>
|
<queue>
|
<flat_set>
|
<flat_map>
|
Header
|
|
Container
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Container
|
|
Nicht-Member-Funktion
|
|
|
|
|
|
|
|
|
|
|
|
**Erklärung:**
- Der C++-Operator `operator==` wurde nicht übersetzt, da es sich um einen C++-spezifischen Begriff handelt
- HTML-Tags, Attribute und Formatierung wurden vollständig beibehalten
- Der Text innerhalb des `
`-Tags (C++-Code) blieb unverändert
- Die Übersetzung folgt den professionellen Standards für technische Dokumentation
|
|
|
|
|
|
|
|
|
|
|
|
Nicht-Member-Funktion
|
|
operator!=
(entfernt in C++20)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
operator!=
(entfernt in C++20)
|
|
|
operator<
(entfernt in C++20)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
operator<
(entfernt in C++20)
|
|
|
operator<=
(entfernt in C++20)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
operator<=
(entfernt in C++20)
|
|
|
operator>
(entfernt in C++20)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
operator>
(entfernt in C++20)
|
|
|
operator>=
(in C++20 entfernt)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
operator>=
(in C++20 entfernt)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Container
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Container
|
|
Header
|
<string>
|
<array>
|
<vector>
|
<deque>
|
<forward_list>
|
<list>
|
<set>
|
<map>
|
<unordered_set>
|
<unordered_map>
|
<stack>
|
<queue>
|
<flat_set>
|
<flat_map>
|
Header
|
|
|
Pseudo-Container
|
Sequenzcontainer
|
Assoziative Container
|
Ungeordnete assoziative Container
|
Container-Adapter
|
|
|
Die Operatoren
<
,
<=
,
>
,
>=
und
!=
werden
synthetisiert
aus
operator
<=>
bzw.
operator
==
.
|
(since C++20)
|
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
|
DR
|
Angewendet auf
|
Verhalten wie veröffentlicht
|
Korrektes Verhalten
|
|
LWG 51
|
C++98
|
Container-Iteratoren könnten ungültig werden
durch beliebige Bibliotheksoperation
|
sie werden nur ungültig
wenn spezifiziert
|
Siehe auch
C++ benannte Anforderungen:
|
|
Numerische Arrays, Array-Masken und Array-Slices
(Klassentemplate)
|
|
|
Speichert und manipuliert Zeichensequenzen
(Klassentemplate)
|
|
|
Schreibgeschützte String-Ansicht
(Klassentemplate)
|