@Urilobus

Как запретить std:: vector перемещаться?

std:: vector при достижении определенной заполненности выделяет себе новые пространство в памяти и перемещается в него, как запретить ему это делать, если на момент запуска программы, я узнаю точное количество элементов нужных для vector и по ходу программы он не должен перемещаться и изменяться, т.к. на его элементы ссылается другой объект?
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Можно через vector::reserve задать ему необходимый объем. Тогда он сразу же выделит все память и, если вы не будете в него класть больше этого размера элементы, он не будет перевыделять память вообще.

Еще можно изменить ваш дизайн. Например, вместо vector использовать list, итераторы в котором не портятся от добавления. Или хранить вместо итераторов/указателей на элементы в векторе индексы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Использовать new[] вместо вектора. Есть и более изящные штуки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы