簡體   English   中英

初始化結構指針的值

[英]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;

我想知道是否有更好的方法來設置struct值而不編寫最后三行代碼。 我在一些網頁上看到他們這樣做:

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};

您可以在聚合初始化中查看此頁面以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM