stl deque перераспределяет мои элементы (c ++)?

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

7

Решение

std::deque «никогда не отменяет указатели или ссылки на остальные элементы» при добавлении или удалении элементов сзади или спереди, так что да, когда вы только push_back элементы остаются на месте.

11

Другие решения

Внимательное прочтение документация кажется, указывает на то, что, пока вы вставляете в начале или в конце, это не приведет к аннулированию указателей, а аннулирование указателей является признаком того, что данные копируются или перемещаются.

Его конструкция не совсем похожа на связанный список, где каждый элемент выделяется индивидуально, а представляет собой набор связанных массивов, предположительно по соображениям производительности. Изменение порядка элементов в середине потребует перемещения данных.

5

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector