Привет мне нужен контейнер stl, который можно индексировать как вектор, но не перемещать старые элементы в памяти, как вектор сделал бы с изменением размера или резервирования (если только я не вызываю резерв один раз в начале с емкостью, достаточной для всех элементов, что является не хорошо для меня). (Обратите внимание, что я связываю адреса с элементами, поэтому я ожидаю, что адрес этих элементов никогда не изменится). Итак, я нашел эту деку. Как вы думаете, это хорошо для этой цели? Важно: мне нужен только откат, но мне нужно увеличивать контейнер по требованию небольшими порциями.
std::deque
«никогда не отменяет указатели или ссылки на остальные элементы» при добавлении или удалении элементов сзади или спереди, так что да, когда вы только push_back
элементы остаются на месте.
Внимательное прочтение документация кажется, указывает на то, что, пока вы вставляете в начале или в конце, это не приведет к аннулированию указателей, а аннулирование указателей является признаком того, что данные копируются или перемещаются.
Его конструкция не совсем похожа на связанный список, где каждый элемент выделяется индивидуально, а представляет собой набор связанных массивов, предположительно по соображениям производительности. Изменение порядка элементов в середине потребует перемещения данных.