Связанный список (std::list
) позволит вам удалить элемент из середины со сложностью O(1)
и автоматически «вытянуть» элементы после него. Вы можете использовать связанный список как стек, используя push_front
. Однако вы должны знать, что доступ к элементу в связанном списке - это O(n)
, так как вам нужно начать с начала списка, а затем идти по ссылкам от одного элемента к следующему, пока вы не достигнете элемента n
(так что нет O(1)
индексации)
В основном вам нужно будет
- Создать итератор
advance
в позицию n
- Получить элемент из итератора
erase
элемент, на который в данный момент указывает итератор
Некоторые примеры кода можно найти здесь .