Здравствуйте Fiend, Вы писали:
F>В моей реализации, при необходимости увеличить размер вектора происходит следующее: аллокатор выделяет новый блок памяти нужного размера, затем в этой области конструктором копий и оператором new размещения создаются копии объектов исходного вектора, потом для объектов исходного вектора выз. деструкторы и старая память освобождается аллокатором. А нельзя ли было обойтись без этого, просто скопировать старый блок при помощи memcpy например и не вызывая деструкторов освободить старую память? В каких случаях этого нельзя делать? А то у меня что-то фантазии не хватает.
Официально в С++ такое разрешается делать только для объектов POD типов.
Разумеется, такой способ копирования объектов будет приводит к появлению некорректных объектов в тех случаях, когда объект содержит ссылки на самого себя (указатели или references). Эти ссылки могут быть явными или могуть быть введены неявно реализацией.