Re: vector -- изменение размеров.
От: Андрей Тарасевич Беларусь  
Дата: 16.09.02 05:21
Оценка:
Здравствуйте Fiend, Вы писали:

F>В моей реализации, при необходимости увеличить размер вектора происходит следующее: аллокатор выделяет новый блок памяти нужного размера, затем в этой области конструктором копий и оператором new размещения создаются копии объектов исходного вектора, потом для объектов исходного вектора выз. деструкторы и старая память освобождается аллокатором. А нельзя ли было обойтись без этого, просто скопировать старый блок при помощи memcpy например и не вызывая деструкторов освободить старую память? В каких случаях этого нельзя делать? А то у меня что-то фантазии не хватает.


Официально в С++ такое разрешается делать только для объектов POD типов.

Разумеется, такой способ копирования объектов будет приводит к появлению некорректных объектов в тех случаях, когда объект содержит ссылки на самого себя (указатели или references). Эти ссылки могут быть явными или могуть быть введены неявно реализацией.
Best regards,
Андрей Тарасевич
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.