Из (от, но все еще очень полезного) SGI STL сводка deque
:
Deque очень похож на вектор: подобно вектору, это последовательность, которая поддерживает произвольный доступ к элементам, постоянное время вставки и удаления элементов в конце последовательности, а также линейное время вставки и удаления элементов в средний.
Основным отличием deque от вектора является то, что deque также поддерживает постоянное время вставки и удаления элементов в начале последовательности. Кроме того, deque не имеет каких-либо функций-членов, аналогичных вектору Capacity () и Reserve (), и не предоставляет каких-либо гарантий достоверности итераторов, связанных с этими функциями-членами.
Вот краткая информация о list
с того же сайта:
Список является двусвязным списком. То есть это последовательность, которая поддерживает как прямой, так и обратный обход, а также (амортизируется) вставку и удаление элементов с постоянным временем в начале, конце или в середине. Списки имеют важное свойство, заключающееся в том, что вставка и объединение не делают недействительными итераторы для перечисления элементов, и что даже удаление делает недействительными только те итераторы, которые указывают на удаляемые элементы. Порядок итераторов может быть изменен (то есть, у list :: iterator может быть другой предшественник или преемник после операции со списком, чем это было раньше), но сами итераторы не будут считаться недействительными или указывать на другие элементы, если только эта недействительность или мутация явная.
Таким образом, контейнеры могут иметь общие подпрограммы, но временные гарантии для этих подпрограмм отличаются от контейнера к контейнеру . Это очень важно при рассмотрении того, какой из этих контейнеров использовать для задачи: принимая во внимание как контейнер будет использоваться наиболее часто (например, больше для поиска, чем для вставки / удаления), направляя вас к нужному контейнеру.