【问题标题】:In c++ there is a way to create a tree-like map that contains maps as a value?在 C++ 中有一种方法可以创建一个包含映射作为值的树状映射?
【发布时间】:2020-07-02 15:13:28
【问题描述】:

在 c++ 中有一种方法可以创建一个包含地图作为值的树状地图?

map<string, map<string, map<string, map<...>>> name;

【问题讨论】:

  • 看起来你大部分时间都在那里。你遇到了什么问题?
  • 我不明白如何在 c++ 中创建这样的地图,因为我无法在地图中无休止地编写文件
  • 就像一棵树。树不能包含树,但它可以包含指向树的指针。

标签: c++


【解决方案1】:

对于任意深度,您将需要一些动态分配。

struct Node
{
   map<string, std::unique_ptr<Node>> children;
};

Node root;

您的最底部节点将没有子节点。

我们不能只写map&lt;string, Node&gt; children(即使子Nodes 自己会在映射中动态分配),因为Node 在定义中是“不完整的”;从某种意义上说,这是 C++ 的限制(尽管you can work around this with a little more thought)。

【讨论】:

    【解决方案2】:

    不至于任意深度,不。
    但是,与大多数问题一样,您可以通过添加间接级别来解决它。

    例如,

    struct Tree
    {
        std::map<std::string, std::optional<Tree>> children;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多