gpt4 book ai didi

c++ - 如何删除集合中的对象

转载 作者:IT王子 更新时间:2023-10-28 23:33:10 25 4
gpt4 key购买 nike

在我的 C++ 程序中,我使用 new 在一个函数中创建对象。这些对象被插入到一个集合中。当我想从集合中删除对象时,我在 for 循环中使用迭代器。当我从集合中删除对象时,我仍然需要删除对象以释放其内存,对吗?我尝试使用delete,但后来我收到一个错误,说没有分配被释放的指针。那么如何做到这一点呢?

这是我创建对象然后将其插入集合的代码

set <myObject> myobjectlist;
myObject *myobject = new myObject;
myobjectlist.insert(*myobject);

在另一个函数中,我尝试从集合中移除一个对象,并释放它的内存:

    for (set<myObject>::iterator i = myobjectlist.begin(); i != myobjectlist.end(); i++)
if (i->myObjectID == myObjectID)
{
myobjectlist.erase(*i);
delete &i;
break;
}

如果没有“删除”部分,这可以正常工作。我添加它是因为我认为对象的内存没有被释放。

最佳答案

假设您正在调用集合的 erase() 方法,请注意这将为您调用对象的析构函数。在您erase() 对象后,它已经被deleted,因此您第二次尝试手动调用删除将失败,因为不再分配指针。

引用见this

关于c++ - 如何删除集合中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5838922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com