目前我正在努力处理应该包含自己的 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;
// ...
};
树中的每个节点都包含一个值和一组通过共享指针映射维护的子 Node
。 std::map
要求(根据标准)存储的类型是完整的,但是 shared_ptr
只需要在创建时类型是完整的,这允许数据结构。一个普通的 Node*
也可以工作,但是你必须手动管理内存。
关于c++ - 包含自己的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862385/