Back to questions
Middle
588
Какова сложность операций для контейнеров std::vector и std::list в C++?
Answer from AI
sobes.tech AI
std::vector
- Доступ по индексу: O(1)
- Добавление в конец (push_back): амортизированное O(1)
- Вставка или удаление в середине: O(n), так как требуется сдвиг элементов
- Итерация: O(n)
std::list (двусвязный список)
- Доступ по индексу: O(n), так как требуется последовательный проход
- Вставка и удаление в любом месте (если есть итератор): O(1)
- Итерация: O(n)
Таким образом, vector эффективен для быстрого доступа и добавления в конец, а list — для частых вставок и удалений в середине без необходимости сдвигать элементы.