如何在构造函数中初始化树节点中的数组
How to initialize an array inside of a tree node in my constructor?
我正在用c++构建一个通用树。我简化了我的代码,只是为了让大家明白我在做什么。本质上,我想在每个树节点中存储一个字符数组。我知道数组的大小,数组的大小和内容对于每个节点都是一样的。
我的问题是如何初始化数组在我的树构造器?示例设置:
class Tree{
public:
Tree();
private:
struct Node{
Node* lchild;
Node* mchild;
Node* rchild;
Node* parent;
char arr[5];
};
Node* root;
};
在构造函数中,我将根节点初始化为一个新节点,所有指向nullptr的指针。
Tree::Tree(){
root = new Node;
root->parent = nullptr;
root->lchild = nullptr;
root->mchild = nullptr;
root->rchild = nullptr;
root->arr[0] = 'a', root->arr[1] = 'b', root->arr[2] = 'c', root->arr[3] = 'd', root->arr[4] = 'e';
}
说我想初始化我的字符数组包含'a','b','c','d','e'
有一个更好的方法比手动做它?我使用VS 2012。据我所知,它并不完全支持c++ 11。
单向:
memcpy( arr, "abcde", 5 );
似乎你正在使用c++11,所以只需写:
struct Node{
Node* lchild;
Node* mchild;
Node* rchild;
Node* parent;
char arr[5] { 'a', 'b', 'c', 'd', 'e' };
};
由于您使用的是c++ 11,我建议使用std::array<char, 5> arr
而不是char arr[5]
。它可以这样使用:
#include <array>
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'};
}
相关文章:
- 从父数组测试用例构造二叉树失败
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 节点插件 API 将数组作为函数参数传递
- 如何在C++中实现节点数任意的通用树数据结构?
- C++创建指向有向图中节点的指针数组
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组
- 返回二叉搜索树特定级别的节点数的函数
- 将节点数组(可变长度)转换为常量浮点**以调用opencv.calcHist
- 张量(多维数组)是树前瞻数据的有效存储类型吗?
- 按顺序遍历 AVL 树,将值保存在数组中
- 二进制搜索树的数组实现
- 如何映射数组元素以选择二进制树节点
- 节点数组声明
- 从节点数组和边缘向量获取所有子树的最有效方法是什么
- 如何使用段树计算数组中的反转次数
- 使用 VS 2012 在构造函数中的树节点中初始化数组
- 如何在构造函数中初始化树节点中的数组
- 用二叉树在数组中找到一个区间的最大值
- 最小堆通过二叉树的数组表示;MoveDown函数无限循环
- 从n元树中删除动态数组节点时断言错误