Schauen Sie sich Effective STL von Scott Meyers an. Es ist gut zu erklären, wie man die STL benutzt.
Wenn Sie eine bestimmte / unbestimmte Anzahl von Objekten speichern möchten und niemals Objekte löschen möchten, ist ein Vektor genau das, was Sie möchten. Es ist der Standardersatz für ein C-Array und funktioniert wie eines, läuft aber nicht über. Sie können die Größe auch vorher mit Reserve () einstellen.
Wenn Sie eine unbestimmte Anzahl von Objekten speichern möchten, diese aber hinzufügen und löschen möchten, möchten Sie wahrscheinlich eine Liste ... weil Sie ein Element löschen können, ohne die folgenden Elemente zu verschieben - im Gegensatz zu Vektoren. Es benötigt jedoch mehr Speicher als ein Vektor, und Sie können nicht nacheinander auf ein Element zugreifen.
Wenn Sie eine Reihe von Elementen nehmen und nur die eindeutigen Werte dieser Elemente finden möchten, reicht es aus, sie alle in eine Menge einzulesen und sie auch für Sie zu sortieren.
Wenn Sie viele Schlüssel-Wert-Paare haben und diese nach Schlüssel sortieren möchten, ist eine Zuordnung nützlich ... aber sie enthält nur einen Wert pro Schlüssel. Wenn Sie mehr als einen Wert pro Schlüssel benötigen, können Sie einen Vektor / eine Liste als Wert in der Karte haben oder eine Multimap verwenden.
Es ist nicht in der STL enthalten, aber es ist im TR1-Update der STL enthalten: Wenn Sie viele Schlüssel-Wert-Paare haben, werden Sie nach Schlüssel suchen, und Sie interessieren sich möglicherweise nicht für deren Reihenfolge möchte einen Hash verwenden - das ist tr1 :: unordered_map. Ich habe es mit Visual C ++ 7.1 verwendet, wo es stdext :: hash_map hieß. Es hat eine Suche von O (1) anstelle einer Suche von O (log n) für die Karte.