Назад к вопросам
Junior — Middle
94
Какова временная сложность операции удаления элемента в контейнере vector?
Ответ от нейросети
sobes.tech AI
В контейнере std::vector операция удаления элемента (например, с помощью erase) имеет временную сложность O(n) в худшем случае, где n — количество элементов в векторе.
Причина в том, что после удаления элемента все последующие элементы сдвигаются влево, чтобы заполнить освободившееся место. Этот сдвиг требует копирования или перемещения элементов.
Пример:
std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 2); // Удаляет элемент '3'
// Элементы '4' и '5' сдвигаются на одну позицию влево
Таким образом, удаление элемента в середине или начале вектора — операция линейной сложности.