c++ - 如何删除包含指向结构的指针的列表的对象?

标签 c++ list struct erase

我有一个名为 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/

相关文章:

C++ 函数 "Automatic"返回值?

c++ - Empty 和 Default 构造函数相同还是不同?

c++ - 访问 CALLBACK 函数中的对象字段 (WINAPI - C++)

c++ - 为什么删除默认参数会破坏此 constexpr 计数器?

python - 列表列表 : why does changing value at a[1][0] also change a[0][0]?

forms - F# 将按钮列表添加到表单控件范围

ios - IOS 应用程序的下拉菜单

java - 使用函数指针为 C 结构创建 JNA 映射

c - 函数自动返回指针而无需 return 语句

c - 在结构中定义和使用 char 字符串