[英]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
類/結構具有value
和age
成員,您可以執行以下操作:
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.