我正在用C ++构建一个通用树。我简化了我的代码只是为了了解我正在做的事情。本质上,我想在每个树节点中存储一个char数组。我知道数组的大小,每个节点的数组大小和内容都是一样的。
我的问题是如何在树构造函数中初始化数组?样本设置:
class Tree{
public:
Tree();
private:
struct Node{
Node* lchild;
Node* mchild;
Node* rchild;
Node* parent;
char arr[5];
};
Node* root;
};
所以在我的构造函数中,我将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';
}
假设我想初始化我的char数组以包含'a','b','c','d','e'
有没有比手动更好的方法?我正在使用VS 2012.据我所知,它并不完全支持C ++ 11。
答案 0 :(得分:1)
一种方式:
memcpy( arr, "abcde", 5 );
答案 1 :(得分:0)
您似乎正在使用c ++ 11,所以只需写:
struct Node{
Node* lchild;
Node* mchild;
Node* rchild;
Node* parent;
char arr[5] { 'a', 'b', 'c', 'd', 'e' };
};
答案 2 :(得分:0)
由于您使用的是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'};
}