Подивіться на ефективну STL Скотта Майєрса. Добре пояснити, як користуватися STL.
Якщо ви хочете зберегти визначену / невизначену кількість об'єктів, і ви ніколи не збираєтесь видаляти жоден, то вектор - це те, що ви хочете. Це заміна за масивом C за замовчуванням, і він працює як один, але не переповнює. Ви можете заздалегідь встановити його розмір, а також за допомогою резерву ().
Якщо ви хочете зберегти невизначену кількість об'єктів, але ви будете додавати їх і видаляти, ви, ймовірно, хочете список ... тому що ви можете видалити елемент, не переміщуючи жодних наступних елементів - на відміну від векторних. Однак це займає більше пам'яті, ніж вектор, і ви не можете послідовно отримати доступ до елемента.
Якщо ви хочете взяти купу елементів і знайти лише унікальні значення цих елементів, це зробить читання їх у набір, і це буде сортувати їх і для вас.
Якщо у вас є багато пар ключових значень, і ви хочете сортувати їх за ключем, то карта корисна ... але вона містить лише одне значення на ключ. Якщо вам потрібно більше одного значення на ключ, ви можете мати вектор / список як своє значення на карті або використовувати мультимап.
Це не в STL, але воно є в оновленні TR1 до STL: якщо у вас є багато пар ключів-значень, які ви збираєтеся шукати за ключем, і вам не важливо їх порядок, ви можете хочете використовувати хеш - який є tr1 :: unordered_map. Я використовував його з Visual C ++ 7.1, де він називався stdext :: hash_map. Він має пошук O (1) замість пошуку O (log n) для карти.