c++ - 如何制作节点数组?

标签 c++ arrays heap-memory

我对指针和数组有一点误解。 当我想创建一个节点数组时,我需要一个指针吗?

是吗

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

但是你应该小心,因为这样节点的内容将被复制到数组单元格。然后会有两个独立的对象,持有相同的数据。您不能使用数组的内容来操作原始节点。

我猜你真的需要一个指向节点的指针数组:)(或者如 Bill 所说,一个指针 vector :vector<Node*> v;)

关于c++ - 如何制作节点数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16391708/

相关文章:

c++ - C/C++ 宏而不是 const

c++ - ICU 字节顺序标记 (BOM)

c++ - 如何在 C++ 中将 PWSTR 转换为字符串?

php - 如何获取 WooCommerce 产品变体值

C内存泄漏与双指针

c++ - 原始双类型比较的 GCC 问题

c++ - 如何将数组中的所有元素相乘

c++ - 在不先构建数组的情况下将数字列表传递给 C++ 中的函数?

java - 这是在 java 中执行以下任务的最佳方法

java - 对于 1GB 堆,在可视 VM 中运行计算保留大小需要多长时间?