创建节点阵列

Creating a Array of Nodes

本文关键字:阵列 节点 创建      更新时间:2023-10-16

当我们创建一个整数数组时,我们这样做:

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

这也起到了作用,但是使用指针并将其存储在节点中有什么好处。当涉及到算法、排序和使用内存时,有没有一种首选的方法。我想弄清楚为什么把它作为一个指向节点的指针数组比作为一个节点数组更好。

使用指针可以更灵活地更新/修改现有数据,因为数据在内存中只声明一次。从这里开始,您可以使用指针在代码中的任何位置进行更改。

此外,使用指针可以节省内存,而创建实际节点将复制所述节点。当您将数组传递到函数中时,这一点就变得显而易见了。在这种情况下,节点数组(没有指针)变成了推送到调用堆栈上的本地副本。当函数返回时,您将丢失对节点所做的任何修改。相反,使用指针将保存节点的状态。

如果有疑问,尽量在可能的地方使用指针。