Я много читал о векторе указателей на этом форуме, но мне трудно понять идею удаления указателей, хранящихся в векторе. Ниже приведен мой запрос:
Предположим, я динамически создаю массив объектов
CPoint* dynamic_array;
dynamic_array = new CPoint[30714];
Теперь мне нужно использовать эти значения в объекте другого класса через вектор указателей
vector<CPoint*> vector_of_pointers;
Затем я разделю элементы dynamic_array
на объекты другого класса, используя следующие
Class B{
vector<CPoint*> vector_of_pointers;
public:
void function(CPoint* a){
if (some condition){
vector_of_pointers.push_back(a);
}
};
Где a
всегда будет указателем на объект из dynamic_array
Затем я планирую удалить первоначально созданный dynamic_array после того, как потребность в его объектах отпадет.
delete[] dynamic_array;
Нужно ли удалять каждый указатель в векторе даже после этого? И если надо, то можно ли это сделать в деструкторе для Class B
?
Извините, если это простой или глупый вопрос, но я новичок в С++, и для моего приложения необходимо использовать контейнер.
std::vector<CPoint>
. Если вам нужен указатель, используйте интеллектуальный указатель. - person chris   schedule 14.08.2013delete
[]` вы не можете разыменовывать элементы. - person juanchopanza   schedule 14.08.2013