Я смотрел контейнеры STL и пытался понять, что они на самом деле (т.е. используемая структура данных), а deque остановил меня: сначала я подумал, что это двойной список, который позволит вставлять и удалять из оба конца в постоянное время, но меня беспокоит обещание, сделанное оператором [], которое выполняется в постоянное время. В связанном списке произвольный доступ должен быть O (n), правильно?
И если это динамический массив, как можно добавлять элементы в постоянное время? Следует отметить, что может произойти перераспределение, и что O (1) является амортизированной стоимостью, как для вектора.
Итак, я задаюсь вопросом, что это за структура, которая позволяет произвольный доступ в постоянное время и в то же время никогда не нужно перемещать в новое место.