- 1
- 2
- 3
- 4
- 5
- 6
A* arr = new A[size];
std::vector<A*> vec(size);
for(size_t i=0; i<size; ++i)
vec.push_back(&a[i])
// Do something with vec
delete[] arr;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144.8
A* arr = new A[size];
std::vector<A*> vec(size);
for(size_t i=0; i<size; ++i)
vec.push_back(&a[i])
// Do something with vec
delete[] arr;
Удаление указателей не ведет к вызову деструкторов объектов, на которые они указывают.
В STL при деструкции контейнера вызываются деструкторы того что в контейнере расположено.
Для объектов - вызываются деструкторы объектов.
Для указателей - ничего не вызывается.
1. код бросает исключения как минимум
2. ради красоты delete[] дублировать массив указателей, это по моему сликом.
3. Зная длину массива, делать push_back ну как-то "расточительно" чтоли.
4. Мне потребовалось минут 5 чтобы понять, что хотел сказать автор.