C++中的嵌套结构

Art*_*hur 2 c++ struct

我尝试使用以下struct声明编写程序:

struct N
{
    int value;
    N Left;
    N Right;
};
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我的程序中会有无数个结构.我仍然希望我的左派右派拥有与N完全相同的结构.有没有办法做到这一点?

bip*_*pll 5

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

struct N {
    int value;
    N *left;
    N *right;
};
Run Code Online (Sandbox Code Playgroud)

您也可以使用参考:

struct N {
    int value;
    N &left;
    N &right;
};
Run Code Online (Sandbox Code Playgroud)

但是这样你就需要仔细地绑定没有任何一个分支(或两者)的元素中的引用.

或其他类型的indirecting: ,,unique_ptr 等.shared_ptrreference_wrapper

此外,您可以拥有一大堆儿童参考:

struct N {
    int value;
    std::vector<std::reference_wrapper<N>> branches;
};
Run Code Online (Sandbox Code Playgroud)

  • 不,你不能使用参考.引用必须在初始化(构造)时绑定到有效对象.因此,这将导致无效的引用. (3认同)
  • @GillBates`N wat {42,wat,wat};`?或者声明一个`外部N null;`和默认的`left`和`right`呢? (2认同)