- 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;
guest 08.04.2010 19:11 # −1.6
guest 08.04.2010 20:17 # 0
guest 08.04.2010 21:38 # 0
guest 08.04.2010 19:19 # +2
guest 08.04.2010 21:43 # −1
guest 09.04.2010 07:15 # +2.2
Удаление указателей не ведет к вызову деструкторов объектов, на которые они указывают.
guest 09.04.2010 17:33 # −0.2
guest 10.04.2010 16:04 # 0
В STL при деструкции контейнера вызываются деструкторы того что в контейнере расположено.
Для объектов - вызываются деструкторы объектов.
Для указателей - ничего не вызывается.
kokorins 09.04.2010 23:42 # 0
1. код бросает исключения как минимум
2. ради красоты delete[] дублировать массив указателей, это по моему сликом.
3. Зная длину массива, делать push_back ну как-то "расточительно" чтоли.
4. Мне потребовалось минут 5 чтобы понять, что хотел сказать автор.