Sobes.tech
Back to questions
Junior — Middle
89

Какова временная сложность операции удаления элементов из вектора в худшем случае?

Answer from AI

sobes.tech AI

В худшем случае удаление элементов из вектора (std::vector в C++) имеет временную сложность O(n), где n — количество элементов в векторе после позиции удаления. Это связано с тем, что после удаления элементов все последующие элементы нужно сдвинуть влево, чтобы заполнить образовавшийся пробел.

Например, если удалить элемент в начале вектора, то все остальные элементы нужно сдвинуть на одну позицию вперед, что требует O(n) операций.

std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin()); // удаление первого элемента
// все элементы сдвигаются на одну позицию влево

Если удаляется элемент в конце, сдвиг не требуется, и операция будет ближе к O(1). Но в худшем случае — O(n).