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