gpt4 book ai didi

c++ - 删除指向存储在列表中的对象的空指针?

转载 作者:行者123 更新时间:2023-11-30 00:38:32 25 4
gpt4 key购买 nike

假设我有这个结构

struct datalist {
int index;
int number;
};

对于我们正在使用的结构,我们将使用一个列表

while(Iter != m_SomeList.end());
{
if(*Iter)
{
//do something

Iter++;
}
else //Iterator is NULL so can we erase it from the list like so?
{
datalist* pAR = *Iter;
Iter = m_SomeList.erase(Iter);
delete pAR; pAR = NULL;
}
}

所以基本上问题是,如果空/无效迭代器为 NULL,我们能否从列表中删除和删除它们?

最佳答案

如果你有一个指针列表,你可以更容易地删除空指针:

std::list<datalist*> m_SomeList = /* ... */;
m_SomeList.remove(NULL);

显然没有必要调用 delete,因为指针已经没有指向任何地方。

另一方面,将删除逻辑与将指针设置为 NULL 的程序的其他部分(您没有向我们展示)结合起来可能会更有成效。

关于c++ - 删除指向存储在列表中的对象的空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574993/

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