使用 VS 2012 在构造函数中的树节点中初始化数组

Initializing array in a node of a tree in constructor using VS 2012

本文关键字:树节点 初始化 数组 构造函数 VS 2012 使用      更新时间:2023-10-16

我正在C++中构建一棵通用树。我简化了我的代码,只是为了了解我在做什么。本质上,我想在每个树节点中存储一个 char 数组。我知道数组的大小以及数组的大小和内容对于每个节点都是相同的。我的印象是VS 2012符合C++11标准。尝试初始化我的数组时,此方法不起作用。

class Tree{
public:
    Tree();
private:
struct Node{
    Node* lchild;
    Node* mchild;
    Node* rchild;
    Node* parent;
    std::array<char, 5> arr { 'a', 'b', 'c', 'd', 'e'};
};
Node* root;
};

这也不是

class Tree{
public:
    Tree();
private:
struct Node{
    Node* lchild;
    Node* mchild;
    Node* rchild;
    Node* parent;
    std::array<char, 5> arr;
};
Node* root;
};
Tree::Tree(){
    root = new Node;
    root->parent = nullptr;
    root->lchild = nullptr;
    root->mchild = nullptr;
    root->rchild = nullptr;
    root->arr = {'a', 'b', 'c', 'd', 'e'};
}

假设我希望我的数组有 30 个元素长。有没有比在我的构造函数中手动初始化更好的使用 VS 2012 初始化它的方法,即

root->arr[0] = 'a', root->arr[1] = 'b', root->arr[2] = 'c', root->arr[3] = 'd'.......

如果没有潜在的解决方法,或者我是否为每个节点做了 30 次?

如果您

已经知道值,则在 Node 构造函数中初始化arr,例如

Node::Node():
  arr({/*values...*/}){
        //rest of c.tor body.
}
最好对

其余成员进行 null 初始化Node