Шрифт:
vector (вектор), list (список) и deque (двусторонняя очередь) выдвигают программисту различные предложения сложности и должны использоваться соответственно. vectоr - тип последовательности, которая используется по умолчанию. list нужно использовать, когда имеются частые вставки и удаления из середины последовательности, deque - структура данных для выбора, когда большинство вставок и удалений происходит в начале или в конце последовательности.
Типы iterator и const_iterator для последовательностей должны быть, по крайней мере, из категории последовательных итераторов.
Таблица 11. Необязательные операции последовательностей
выражение | возвращаемый тип | семантика исполнения | контейнер |
---|---|---|---|
a.front | reference; const_reference для постоянного a | *a.begin | vector, list, deque |
a.back | reference; const_reference для постоянного a | *a.(--end) | vector, list, deque |
a.push_front(t) | void | a.insert(a.begin, t) | list, deque |
a.push_back(t) | void | a.insert(a.end, t) | vector, list, deque |
a.pop_front | void | a.erase(a.begin) | list, deque |
a.pop_back | void | a.erase(--a.end) | vector, list, deque |
a[n] | reference; const_reference для постоянного a | *(a.begin + n) | vector, deque |
Все операции в расположенной выше таблице обеспечиваются только для контейнеров, для которых они занимают постоянное время.
Вектор (Vector)
vector - вид последовательности, которая поддерживает итераторы произвольного доступа. Кроме того, он поддерживает операции вставки и удаления в конце с постоянным (амортизированным) временем; вставка и удаление в середине занимают линейное время. Управление памятью обрабатывается автоматически, хотя для улучшения эффективности можно давать подсказки.