#include <vector>
#include <iostream>
#include <memory>
using namespace std;
class Test
{
public:
Test(){ cout<<"Const\n"; }
~Test(){ cout<<"Dest\n"; }
};
int main()
{
vector<Test *> tVec;
tVec.push_back(new Test());
tVec.push_back(new Test());
tVec.insert(tVec.end(),new Test());
tVec.emplace(tVec.end(),new Test[4]);
vector<Test *>::iterator it;
for(it = tVec.begin(); it != tVec.end(); it++)
{
delete *it;
it = tVec.erase(it);
}
return 0;
}
ВЫВОД:Проблема в удалении отдельных элементов вектора в C++
Const Const Const Const Const Const Const Dest Dest
только два деструктор был вызван, а 8 - конструктор. Я знаю последние четыре объекта, которые я создал как массив. Есть ли общий способ удаления отдельных объектов внутри вектора. Второй Как получить доступ к этому отдельному элементу массива.
для 'new []' вам нужно вызвать 'delete []' вы не можете обойти это, поэтому поверните каждый указатель в указатель на массив (например, 'vector>') или у вас есть два вектора –
BeyelerStudios
, почему вы храните указатели в векторе? Тот факт, что вы хотите удалить их вручную, указывает, что вам действительно не нужны указатели (вам понадобятся указатели, если объекты принадлежат кому-то другому, и в этом случае вектор не хочет их удалять). – user463035818