Я прошу прощения, если это слишком простой вопрос, чтобы задать его здесь;Я читал немного о std :: vector, и я понимаю, что он должен изменить размер, когда размер достигает емкости.Это может быть дорогостоящей операцией, если содержащиеся в ней объекты большие, так как она должна копировать каждый из них.
Мой вопрос: как std :: vector обрабатывает фактический размер объектов, которые он содержит?Предположим, что я инициализирую некоторые
std::vector<Obj> vec(100);
И каждый объект Obj инициализируется чем-то очень маленьким.Но что, если я тогда сделаю что-то вроде
vec[14].ENGORGIO()
, так что теперь это занимает гораздо больше памяти.Поскольку элементы std :: vector хранятся в смежной памяти, означает ли это, что он должен изменить размер (дорого!)
Чтобы избежать подобных вещей, я должен вместо этого хранить указатели в векторе, а несами объекты?Вот так
std::vector< std::unique_ptr<Obj> > vec;
Спасибо