Re[4]: Конструкторы в массиве
От: Кодт Россия  
Дата: 27.04.12 20:29
Оценка:
Здравствуйте, Erop, Вы писали:

YLS>>Какие-то проблемы реализации?

E>Никаких, только зачем это всё при живом векторе-то?

Единственная проблема — если класс не assignable и/или не copy constructible.
Тогда живым вектором не отделаешься.
Придётся городить собственный огород "по мотивам". Упрощённо,
MyClass* array = (MyClass*) new aligned_storage<MyClass>[count]; // (MyClass*) malloc(sizeof(T)*count);
for_each(array, array+count, [](MyClass& object) { new(&object) MyClass(first,second); } );

.....

for_each(array, array+count, [](MyClass& object) { object.~MyClass(); } );
delete[] (aligned_storage<T>*)array; // free(array);

С другой стороны, для крупных объектов (которые некопируемы по причине своих размеров, в том числе), можно припахать ptr_vector.
А для мелких — пересмотреть в сторону копируемости, либо двухфазной инициализации. (Первая фаза — в конструкторе, вторая — ручной вызов функции).
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.