我有一个名为 Node 的结构,它有 3 个成员,其中一个充当对象的 ID:
struct Node {
string mem1;
string mem2;
int id;
}
还有一个包含指向 Node 对象的指针的列表:
list<Node*> g_node;
当试图从该列表中删除特定对象(由 id 本地化)时,问题就来了。我有此代码但不起作用:
list<Node>::iterator it = g_node.begin();
while (it != g_node.end()){
if (it->id == iden)
{
g_node->erase(it);
}
}
} else if (iden != 0) {
“iden”为待删除对象的id,由用户输入。
出了什么问题?
最佳答案
为什么不使用 std::list::remove_if
?
g_node.remove_if([iden](const Node *n){return n->id == iden;});
请注意,这不会删除
Node
对象(您的原始代码也不会)。对于包含指针的容器,您可能需要考虑智能指针。
关于c++ - 如何删除包含指向结构的指针的列表的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35244667/