[英]Creating a Array of Nodes
當我們創建一個整數數組時,我們這樣做:
int main() {
int x;
cout << "Enter size of array"
cin >> x;
int* myArray;
myArray = new int[x]
}
我們在數組旁邊分配星號,我們將其分配為指針數組,對嗎?
如果我在其中放置節點數組:
struct Node {
string Name;
int Age;
}
我運行了一些代碼對其進行實驗,並且對其有了更多的了解,我試圖像數組示例一樣進行操作,但是創建了一個帶有節點的數組。
int main() {
Node* sumShit[5];
Node* America = new Node();
America->age = 16;
America->Name = "America";
sumShit[0] = America;
Node* Japan = new Node();
Japan->age = 15;
Japan->Name = "Japan";
sumShit[1] = Japan;
cout << "[" << sumShit[1]->Name << ", " << sumShit[1]->age << "]";
}
一切都可以用指針打印出來,但是我也沒有指針也可以,我只是將節點屬性存儲在Node中:
Node myNodeShit[5];
Node Poop;
Poop.age = 16;
Poop.Name = "Poop";
myNodeShit[0] = Poop;
sortArrayName(myNodeShit, 5);
printArray(myNodeShit, 5);
而且,這也起作用,但是使用指針並將其僅存儲在節點中的好處是什么。 對於算法,排序和使用內存是一種首選方法。 我試圖弄清楚為什么將它作為指向節點的指針而不是指向節點的數組會更好。
使用指針可以在更新/修改現有數據時提供更大的靈活性,因為數據僅在內存中聲明一次。 在這里,您可以使用指針在代碼中的任何位置進行更改。
另外,使用指針可以節省內存,而創建實際節點將創建該節點的副本。 當您將數組傳遞給函數時,這一點變得顯而易見。 在這種情況下,節點數組(無指針)將成為本地副本,並推送到調用堆棧中。 函數返回時,您將丟失對節點所做的任何修改。 相反,使用指針將保存節點的狀態。
如有疑問,請嘗試盡可能使用指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.