创建节点阵列
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);
这也起到了作用,但是使用指针并将其存储在节点中有什么好处。当涉及到算法、排序和使用内存时,有没有一种首选的方法。我想弄清楚为什么把它作为一个指向节点的指针数组比作为一个节点数组更好。
使用指针可以更灵活地更新/修改现有数据,因为数据在内存中只声明一次。从这里开始,您可以使用指针在代码中的任何位置进行更改。
此外,使用指针可以节省内存,而创建实际节点将复制所述节点。当您将数组传递到函数中时,这一点就变得显而易见了。在这种情况下,节点数组(没有指针)变成了推送到调用堆栈上的本地副本。当函数返回时,您将丢失对节点所做的任何修改。相反,使用指针将保存节点的状态。
如果有疑问,尽量在可能的地方使用指针。
相关文章:
- 反向给定链表中的K节点
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- OpenMP阵列性能较差
- Boost Graph Library,修复节点大小
- C++A*算法并不总是在路径中具有目标节点
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 如何找到2个单链表的公共节点
- 当我的阵列太大时出现分段错误
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 为什么我的删除节点函数实际上没有删除节点?
- 我们可以删除链表中静态内存中的节点吗
- 如何在pugixml中获取节点的内部XML
- 位阵列上的快速AND运算
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 阵列必须使用大括号封闭的初始器进行初始化
- 信息实际上并未存储在节点阵列中
- 如何在C 中实现多维阵列的多个节点
- 将阵列转换为节点
- 创建节点阵列