次のようなポインターのベクトルがあります。
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();
、「ベクトル反復子に互換性がありません」というエラーが表示されます。私はまだ何を間違っていますか?