簡體   English   中英

如何制作節點數組?

[英]how to make array of nodes?

我對指針和數組有一點誤解。 當我想創建一個節點數組時,我需要一個指針對嗎?

是嗎

Node* array;
array = new Node[size];

當然問題是當我想將節點分配到數組中時

void Class::enqueue(int newNum)
{

    Node* newNode = new Node();
    newNode->value = newNum;
    newNode->age = 0;

    if (isFull())
        resize();
    top++;
    array[top] = newNode; // ERROR. does this have to be a pointer?
}   

我理解newNode是一個指針。 但如果我想動態分配節點,那么我將不得不使用指針。 如果是這種情況,那么我如何將節點分配到數組中? 謝謝。

你說你想要一個節點數組,但你真正想要的是一個指向節點的指針數組。 代碼中的newNode是一個指針,因此數組應該能夠保存Node指針。 將數組定義為:

Node** array;
array = new (Node*)[size];

記得在不再需要時釋放內存:

delete []array;

您還可以使用Node數組:

Node* array;
array = new Node[size];

...
Node *newNode = new Node();
...
array[top] = *newNode; // dereference the pointer

但是你應該小心,因為這樣節點的內容將被復制到數組單元格。 然后將有兩個單獨的對象,保存相同的數據。 您無法使用數組的內容操作原始節點。

我猜你真的需要一個指向節點的指針數組:)(或者比如說,一個指針vector<Node*> v;vector<Node*> v;

Node* array;

創建一個Node數組,它將存儲Node對象,如

int* array;

創建一個存儲整數的數組。 然而,

Node* newNode = new Node(); 

new返回一個指向對象Node ,即newNode ,當你試圖把指向Node一個期望的對象Node ,你得到這個錯誤。

假設您的Node類/結構具有valueage成員,您可以執行以下操作:

Node newNode(newNum, 0); //^^call your Node's constructor that takes 2 params
array[top] = newNode;

把對象Node到您的陣列Node 您還可以使用STL容器來避免使用動態數組。

如果你可以使用std::vector ,你可以使用std::vector<Node*> myvector; (如果你真的想要指針)

然后你可以做myvector.push_back(new Node(...)); 不要忘記刪除內存,否則你會有內存泄漏,

如果您不關心指針,只需使用以下內容(更干凈,無需手動釋放內存)

std::vector<Node> myvector;
Node node;
myvector.push_back(node);

暫無
暫無

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

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