Производительность вставки / удаления списка или контейнера O (1), с семантикой массива

Я ищу коллекцию, которая предлагает семантику списка, но также допускает семантику массива. Скажем, у меня есть список со следующими пунктами:

apple orange carrot pear 

тогда мой контейнерный массив будет:

container[0] == apple 
container[1] == orangle 
container[2] == carrot 

Затем скажите, что я удаляю оранжевый элемент:

container[0] == apple 
container[1] == carrot 

Я хочу свернуть пробелы в массиве без необходимости явного изменения размера, т. Е. Если я удаляю контейнер [0], то контейнер разрушается, так что контейнер [1] теперь отображается как контейнер [0] и контейнер [2] как контейнер [1] и т. д. Мне все еще нужно получить доступ к списку с семантикой массива, а нулевые значения не разрешены (в моем конкретном случае использования).

РЕДАКТИРОВАТЬ:

Чтобы ответить на некоторые вопросы - я знаю, что O (1) невозможно, но я не хочу, чтобы контейнер с семантикой массива приближался к O (log N). В некотором смысле поражение цели, я мог бы просто перебрать список.

Первоначально у меня было некоторое словоблудие здесь по порядку сортировки, я не уверен, что я думал в то время (пятничные пивные часы скорее всего). Одним из вариантов использования является список Qt, содержащий изображения - удаление изображения из списка должно свернуть список, не обязательно брать последний элемент из списка и бросать его на место. В этом случае все же я хочу сохранить семантику списка.

Основные различия, которые я вижу как разделение списка и массива: Массив - постоянный доступ к списку - произвольная вставка

Я также не слишком обеспокоен, если перебалансировка делает недействительными итераторы.

Ответы на вопрос(7)

Ваш ответ на вопрос