Списки лучше вставлять или удалять в любом месте посередине, векторы лучше вставлять в конце.
Векторы также удобнее для доступа к элементам.
Это артефакткак они реализованы.
Итак, если коллекция изменяется очень мало (по сравнению с доступом) или изменения в конце концентрируются, я бы использовал вектор.
Если числоизменений существенны (по сравнению с доступом), и они не на концах, я бы использовал список.
В качестве примера, чтение в коллекции при запуске программы и вряд ли когда-либо ее изменение (илиесли бы изменения только добавляли в конец), это было бы хорошим кандидатом на вектор.
С другой стороны, приложение телефонной книги для особенно популярной и непостоянной рок-звезды, я бы искалк списку.На самом деле, я бы смотрел на соединение с базой данных, но это был лучший пример, который я мог привести в кратчайшие сроки: -)
Что касается ссылок, последний черновой вариант C ++ 0x частично (23.3.4, списки):
Список - это контейнер последовательности, который поддерживает двунаправленные итераторы и позволяет выполнять операции вставки и удаления с постоянным временем в любом месте последовательности с автоматическим управлением хранением.В отличие от векторов и запросов быстрый произвольный доступ к элементам списка не поддерживается.
Раздел 23.3.5 (для векторов):
Вектор - это контейнер последовательности, который поддерживаетитераторы с произвольным доступом.Кроме того, он поддерживает (амортизируется) операции вставки и удаления с постоянным временем в конце;вставка и стирание в середине занимают линейное время.