首页 > 解决方案 > C++中的嵌套结构

问题描述

我试图用以下struct声明编写一个程序:

struct N
{
    int value;
    N Left;
    N Right;
};

如果可能的话,我的程序中将有无限数量的结构。我仍然希望我的左右具有与N完全相同的结构。有没有办法做到这一点?

标签: c++struct

解决方案


要构建树状结构,您可以使用指针:

struct N {
    int value;
    N *left;
    N *right;
};

您还可以使用参考:

struct N {
    int value;
    N &left;
    N &right;
};

但是这样你需要小心地绑定没有任何一个分支(或两者都有)的元素中的引用。

或其他间接类型:unique_ptr, shared_ptr, reference_wrapper, 等。

此外,您可以拥有一大堆子引用:

struct N {
    int value;
    std::vector<std::reference_wrapper<N>> branches;
};

推荐阅读