Regardez le STL efficace par Scott Meyers. C'est bon pour expliquer comment utiliser la STL.
Si vous souhaitez stocker un nombre déterminé / indéterminé d'objets et que vous n'allez jamais en supprimer, un vecteur est ce que vous voulez. C'est le remplacement par défaut d'un tableau C, et il fonctionne comme un, mais ne déborde pas. Vous pouvez également définir sa taille au préalable avec reserve ().
Si vous souhaitez stocker un nombre indéterminé d'objets, mais que vous les ajouterez et les supprimerez, vous voudrez probablement une liste ... car vous pouvez supprimer un élément sans déplacer les éléments suivants - contrairement au vecteur. Cependant, cela prend plus de mémoire qu'un vecteur et vous ne pouvez pas accéder séquentiellement à un élément.
Si vous voulez prendre un tas d'éléments et ne trouver que les valeurs uniques de ces éléments, les lire tous dans un ensemble le fera, et il les triera également pour vous.
Si vous avez beaucoup de paires clé-valeur et que vous souhaitez les trier par clé, une carte est utile ... mais elle ne contiendra qu'une seule valeur par clé. Si vous avez besoin de plus d'une valeur par clé, vous pouvez avoir un vecteur / liste comme valeur dans la carte, ou utiliser une multi-carte.
Ce n'est pas dans la STL, mais c'est dans la mise à jour TR1 de la STL: si vous avez beaucoup de paires clé-valeur que vous allez rechercher par clé, et que vous ne vous souciez pas de leur ordre, vous pourriez voulez utiliser un hachage - qui est tr1 :: unordered_map. Je l'ai utilisé avec Visual C ++ 7.1, où il s'appelait stdext :: hash_map. Il a une recherche de O (1) au lieu d'une recherche de O (log n) pour la carte.