Middle
50
0
questionbank

Какова сложность операций для контейнеров std::vector и std::list в C++?

Ответ от нейросети sobes.tech

Частные случаи могут зависеть от реализации, но для стандартных контейнеров сложность операций выглядит следующим образом:

std::vector

ОперацияСредняя сложностьХудшая сложностьПримечание
Доступ по индексуO(1)O(1)operator[], at()
Вставка в конецO(1) амортизированнаяO(N)push_back() (при необходимости перераспределения)
Вставка в произвольное местоO(N)O(N)
Удаление с концаO(1)O(1)pop_back()
Удаление из произвольного местаO(N)O(N)
Поиск элементаO(N)O(N)std::find (независимо от контейнера)
Изменение размераO(N)O(N)resize(), reserve() (при увеличении емкости)

std::list

ОперацияСредняя сложностьХудшая сложностьПримечание
Доступ по индексуO(N)O(N)Требует итерации от начала или конца к нужному элементу
Вставка в к

Частные случаи могут зависеть от реализации, но для стандартных контейнеров сложность операций выглядит следующим образом:

std::vector

ОперацияСредняя сложностьХудшая сложностьПримечание
Доступ по индексуO(1)O(1)operator[], at()
Вставка в конецO(1) амортизированнаяO(N)push_back() (при необходимости перераспределения)
Вставка в произвольное местоO(N)O(N)
Удаление с концаO(1)O(1)pop_back()
Удаление из произвольного местаO(N)O(N)
Поиск элементаO(N)O(N)std::find (независимо от контейнера)
Изменение размераO(N)O(N)resize(), reserve() (при увеличении емкости)

std::list

ОперацияСредняя сложностьХудшая сложностьПримечание
Доступ по индексуO(N)O(N)Требует итерации от начала или конца к нужному элементу
Вставка в к

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

c++containercomplexityvectorlistperformance