Freigeben über


STL-Container

Die Standardvorlagenbibliothek (STL) stellt mehrere Container zum Speichern von Auflistungen von verknüpften Objekten bereit.Die Container sind alle Vorlagenklassen und ermöglichen Ihnen, um anzugeben, welche Objekte in den Containern zulässig sind.Dieses Thema enthält eine Übersicht über die STL-Container, um zu entscheiden, welcher Container für Anforderungen am besten entspricht.

Es gibt zwei STL-Bibliotheken Auswahl: Systemeigene STL und STL/CLR.Weitere Informationen über STL/CLR finden Sie unter STL/CLR-Bibliotheksreferenz.

Container in STL können in drei Kategorien unterteilt, in Sequenz in den Container assoziative Container und in Container Netzwerkkarten aufgeteilt werden.Diese Kategorien und Auflistungen, die den einzelnen Kategorien gehören, werden im Folgenden zusammengefasst.Ausführlichere Informationen kann in der Referenzdokumentation für die Container gefunden werden.

Sequenz-Container

Sequenz Dienstcontainer warten die ursprüngliche Reihenfolge der eingefügten Elementen.Dadurch können Sie angeben, wo das Element im Container eingefügt werden sollen.

Der Container deque doppelseitige (Warteschlange) ermöglicht die schnelle Einfügungen und Löschungen am Anfang und am Ende des Containers zu.Sie können jedes Element auch nach dem Zufallsprinzip schnell zugreifen.

Der list Container ermöglicht schnelle Einfügungen und Löschungen an einer beliebigen Position im Container zu. Sie können aber ein Element im Container nicht willkürlich zugegriffen werden.

Der vector Container verhält sich wie ein Array, wird jedoch bei Bedarf automatisch vergrößert.

Weitere Informationen über die Sequenz Containern finden Sie in der folgenden Tabelle untersuchen:

Container

Systemeigene STL

STL/CLR

deque

deque Class

Doppelschlange (STL und CLR)

list

list Class

Liste (STL und CLR)

vector

vector Class

Vektor (STL und CLR)

Vereinigende Container

Das definierende Merkmal von assoziative Containern besteht darin, dass Elemente in einer vordefinierten Reihenfolge eingefügt werden, z. B. sortiertes aufsteigend.

Die assoziative Container können in zwei Teilmengen: Wird und legt sie fest.map, manchmal als ein Wörterbuch besteht aus einem Schlüssel-Wert-Paar.Der Schlüssel wird verwendet, um die Reihenfolge zu sortieren, und der Wert wird der mit diesem Schlüssel zugeordnet.Zum Beispiel könnte map die Schlüssel, die jedes eindeutige Wort in einem Text- und Werte darstellen, wieoft darstellen, dass Wort im Text angezeigt wird.aufsteigender set ist lediglich ein Container eindeutigen Elemente.

map zulassen und set nur eine Instanz eines Schlüssels oder in den Container eingefügt werden soll.Wenn mehrere Instanzen von Elementen erforderlich sind, verwenden Sie multimap oder multiset.

Unterstützung von Karten und Sätze bidirektionale Iteratoren.Weitere Informationen zu Iteratoren finden Sie unter Iteratoren.

Während nicht offiziell der Teil des STL-Standards, hash_map und hash_set gemeinsam verwendet werden, Suchvorgänge Zeitangaben zu verbessern.Diese Container speichern ihre Elemente als Hashtabelle, wobei jeder Tabelleneintrag eine bidirektionale verknüpfte Liste von Elementen enthält.Um die schnellsten Sucht zeiten zu gewährleisten, stellen Sie sicher, dass der Hashalgorithmus für die Elemente ebenfalls verteilte Hashwerte zurückgibt.

Weitere Informationen über die assoziative Container finden Sie in der folgenden Tabelle untersuchen:

Container

Systemeigene STL

STL/CLR

hash_map

hash_map Class

hash_map (STL und CLR)

hash_multimap

hash_multimap Class

hash_multimap (STL und CLR)

hash_multiset

hash_multiset Class

hash_multiset (STL und CLR)

hash_set

hash_set Class

hash_set (STL und CLR)

map

map Class

Karte (STL und CLR)

multimap

multimap Class

Multimap (STL und CLR)

multiset

multiset Class

Multiset (STL und CLR)

set

set Class

Datensatz (STL und CLR)

Container-Adapter

Die Container Netzwerkkarten sind einfach Variationen der oben genannten Container.Die Container Netzwerkkarten unterstützen keine Iteratoren.

Der priority_queue Container organisierte so, dass das Element mit dem höchsten Wert immer zuerst in der Warteschlange befindet.

Der queue Container (First-In-First-Out Semantik folgt zunächst in, out zuerst).Das erste Element, das eingefügt werden soll (gedrückt) in die Warteschlange ist das zu entfernende erste (geholt worden).

Der stack Container folgt Semantik LIFO (Last In, Out zuerst).Das (gedrückt wurde) auf dem Stapel einzufügende letzte Element ist das erste Element entfernt werden soll (geholt worden).

Da Container Netzwerkkarten Iteratoren nicht unterstützen, können sie nicht mit den STL-Algorithmen verwendet werden.Weitere Informationen zu Algorithmen finden Sie unter Algorithms.

Weitere Informationen zu den Container Netzwerkkarten finden Sie in der folgenden Tabelle untersuchen:

Container

Systemeigene STL

STL/CLR

priority_queue

priority_queue Class

priority_queue (STL und CLR)

queue

queue Class

Warteschlange (STL und CLR)

stack

stack Class

Stapeln (STL und CLR)

Anforderungen für die Containerelemente

Die Elemente, die in einem STL-Container eingefügt werden, können einen beliebigen Objekttyp handeln, der einen öffentlicher Kopierkonstruktor, ein öffentlicher Destruktor und ein Zuweisungsoperator des öffentlichen Zweckbestimmung.Der Destruktor löst möglicherweise keine Ausnahme aus.Darüber hinaus müssen assoziative Container wie set und einen öffentlichen map der Vergleichsoperator definierten Standardwert ist operator<.Einige Vorgänge in Containern benötigen möglicherweise auch einen öffentlichen Standardkonstruktor und einen öffentlichen Äquivalenz operator.

Containerelemente zugreifen.

Die Elemente werden von Containern mithilfe von Iteratoren zugegriffen.Weitere Informationen finden Sie unter Iteratoren.

HinweisHinweis

Sie können auch mithilfe For Each in STL-Auflistungen zu durchlaufen.Weitere Informationen finden Sie unter Gewusst wie: Durchlaufen Sie von jedem für mit STL-Auflistung.

Siehe auch

Referenz

Standardvorlagenbibliothek

<sample container>