我有一个这样的指针向量:
vector<Item*> items;
我想清除它。我试过了:
for (unsigned int i = 0; i < items.size(); i++)
delete items.at(i);
items.clear();
,
while (!items.empty())
{
delete items.back();
items.pop_back();
}
,
while (!items.empty())
{
delete items.at(0);
items.erase(items.begin());
}
, 和
while (!items.empty())
delete items.at(0);
这些中的每一个都因某种原因而爆炸,包括删除已删除的对象和超出范围的向量迭代器。
我该怎么办?我希望能够重用相同的向量,并在以后向其中添加更多的 Item 指针。只是使用delete
而不清除仍然会在那里留下垃圾指针,对吗?
编辑:好的,我已经切换到 shared_ptrs。我现在有
vector<shared_ptr<Item> > items;
然而,当我这样做时items.clear();
,我收到错误“向量迭代器不兼容”。我还在做错什么?