用C ++编写一个简单的面向对象图


Mystery☀
2025-04-01 10:30:34 (7天前)
  1. :: setlt; Nodegt;,通过改变


边缘
</跨度>
只会更改本地副本(实际上不是相邻节点)。如果我使用std :: set&lt; Node *&gt;,我不相信&lt;运营商会工作,因为它会

操作
</跨度>

2 条回复
  1. 0# ikun | 2019-08-31 10-32



    正如您所推断的那样,您无法在STL容器中存储引用,因为存储的项目的要求之一是它们可以分配。这就是为什么你不能在STL容器中存储数组的原因。如果没有至少一个是用户定义的类型,也不能重载运算符,这使得如果在STL类中存储指针,则无法进行自定义比较…



    但是,您仍然可以使用

    std::set

    指针,如果你给

    set

    自定义比较器仿函数:




    1. struct NodePtrCompare {
      bool operator()(const Node left, const Node right) const {
      return left->key < right->key;
      }
      };

    2. std::set adjacent;

    3. </code>


    而你仍然可以快速删除

    key

    像你要的那样。


登录 后才能参与评论