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