初始化结构指针的值
Initialize values of a struct pointer
我开始学习cpp中的二叉树和动态分配内存;
因此要初始化一个结构,我这样做
struct node{
int val;
node* left;
node* right;
};
//Initialize:
node* root = new node;
root->val = 7;
root->left = NULL;
root->right = NULL;
我想知道是否有更好的方法来设置结构值而无需编写最后三行代码。
我在一些网页上看到他们这样做:
int* n = new int(6);
谢谢!
您可以编写自定义构造函数:
struct node{
int val;
node* left;
node* right;
node(int);
};
node::node(int _v){
this->val = _v;
this->left = this->right = nullptr;
}
node *root = new node(6); // Works as you want
或者使用成员初始化列表,看起来更简单:
struct node{
int val;
node* left;
node* right;
node(int _v) : val(_v), left(nullptr), right(nullptr) {};
};
不要忘记列表后面的大括号。
除了 iBug 关于使用构造函数的回答之外,如果您的对象是普通旧数据类型,您可以使用聚合初始化来使用初始化列表构造它,方法如下,这避免了定义您自己的构造函数:
node root = {7, nullptr, nullptr};
或者如果您在堆上进行分配:
node* root = new node{7, nullptr, nullptr};
您可以在 aggregate initialization 上查看此页面以获取更多信息。
我开始学习cpp中的二叉树和动态分配内存; 因此要初始化一个结构,我这样做
struct node{
int val;
node* left;
node* right;
};
//Initialize:
node* root = new node;
root->val = 7;
root->left = NULL;
root->right = NULL;
我想知道是否有更好的方法来设置结构值而无需编写最后三行代码。 我在一些网页上看到他们这样做:
int* n = new int(6);
谢谢!
您可以编写自定义构造函数:
struct node{
int val;
node* left;
node* right;
node(int);
};
node::node(int _v){
this->val = _v;
this->left = this->right = nullptr;
}
node *root = new node(6); // Works as you want
或者使用成员初始化列表,看起来更简单:
struct node{
int val;
node* left;
node* right;
node(int _v) : val(_v), left(nullptr), right(nullptr) {};
};
不要忘记列表后面的大括号。
除了 iBug 关于使用构造函数的回答之外,如果您的对象是普通旧数据类型,您可以使用聚合初始化来使用初始化列表构造它,方法如下,这避免了定义您自己的构造函数:
node root = {7, nullptr, nullptr};
或者如果您在堆上进行分配:
node* root = new node{7, nullptr, nullptr};
您可以在 aggregate initialization 上查看此页面以获取更多信息。