微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从异构大括号初始化器列表创建一棵树

如何解决从异构大括号初始化器列表创建一棵树

在学习 C++ 时,我决定制作一个二叉树。仅简化为类定义和构造函数,它看起来像这样:

class Tree
{
public:
        class Node
        {
        public:
                Node(void) = default;
                virtual ~Node(void) = default;
        };
    
        class NullNode : public Node
        {
        public:
                NullNode(void) = default;
                ~NullNode(void) override = default;
        };
    
        class ValueNode : public Node
        {
        public:
                ValueNode(int value);
                ValueNode(int value,Node *left,Node *right);
                ~ValueNode(void) override;
        };
            
        // Constructors
        Tree(void);
        Tree(Node *root);
        ~Tree(void);
};

构建一个列表,我必须像这样创建它:

Tree tree(new Node(new Node(1),new Node(3),2),new Node(new Node(5),new Node(7),6),4);

感觉非常难看。我希望能够像这样构造列表:

Tree tree({{{1},{3},2},{{5},{7},6},4});

我一直在研究大括号括起来的初始化列表,但我发现的大多数文本倾向于将它们更多地视为同一时间的可变长度列表,而不是不同类型的最大长度列表。我正在寻找的可能吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。