c++ - 包含自己的 map

标签 c++ stl c++11 std

目前我正在努力处理应该包含自己的 map 。但是编译的时候不知道嵌套的深度。

std::map<Key, std::map<Key, std::map<Key, std::map<Key, ...>>>>

有没有办法不用无限重复自己就可以实现这个目标?

最佳答案

自引用数据结构的金锤子是指针的使用。在您的特定情况下,要实现一棵树,您可以这样做:

template <typename Key, typename Value>
struct Node {
   Value data;
   std::map< Key, std::shared_ptr<Node> > child;
// ...
};

树中的每个节点都包含一个值和一组通过共享指针映射维护的子 Nodestd::map 要求(根据标准)存储的类型是完整的,但是 shared_ptr 只需要在创建时类型是完整的,这允许数据结构。一个普通的 Node* 也可以工作,但是你必须手动管理内存。

关于c++ - 包含自己的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862385/

相关文章:

c++ - 使用 gdb 调试 C++ STL/Boost 的最佳实践

c++ - 为什么这个仿函数的析构函数被调用两次?

C++ - 自动转换为 std::string

c++ - 包含类对象的最佳 C++ 设计是什么?

python - 向下转换为 pybind11 派生类

c++ - 继承 Shell 类以供容器使用

c++ - 使用指向内部缓冲区的指针 move 语义

c++ - 如何使用 std::copy 将一个 constexpr 数组复制到另一个 constexpr 数组?

c++ - 声明和初始化的问题

c++ - 图像旋转给出灰度图像