自引用数据结构的金锤是指针的使用.在您的特定情况下,要实现树,您可以这样做:
template <typename Key, typename Value>
struct Node {
Value data;
std::map< Key, std::shared_ptr<Node> > child;
// ...
};
Run Code Online (Sandbox Code Playgroud)
树中的每个节点都包含一个值和一组Node通过共享指针映射维护的子节点.的std::map要求(根据标准)所存储的类型是完整的,但shared_ptr只需要类型为在创建点,其允许该数据结构完整.普通Node*也可以工作,但是你必须手动管理内存.