Производительность вставки / удаления списка или контейнера 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, содержащий изображения - удаление изображения из списка должно свернуть список, не обязательно брать последний элемент из списка и бросать его на место. В этом случае все же я хочу сохранить семантику списка.
Основные различия, которые я вижу как разделение списка и массива: Массив - постоянный доступ к списку - произвольная вставка
Я также не слишком обеспокоен, если перебалансировка делает недействительными итераторы.