如何制作节点数组
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;
(
如果你可以使用std::vector
,你可以使用std::vector<Node*> myvector;
(如果你真的想要指针(
然后你可以做myvector.push_back(new Node(...));
不要忘记删除内存,否则你会有内存泄漏,
如果您不关心指针,只需使用以下(更干净,无需手动释放内存(
std::vector<Node> myvector;
Node node;
myvector.push_back(node);
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 容器来避免使用动态数组。
相关文章:
- 哈希映射使用 nullptr c++ 初始化节点的动态数组
- 节点插件 API 将数组作为函数参数传递
- C++创建指向有向图中节点的指针数组
- 将节点数组(可变长度)转换为常量浮点**以调用opencv.calcHist
- 如果我删除指向节点的指针数组,节点本身是否会被删除
- lower_bound结构节点的类数组中
- 从链表数组访问节点数据
- 节点.js C++插件 - 设置数组的某个索引
- 为什么我所有的节点都指向同一个字符数组
- 如何映射数组元素以选择二进制树节点
- 如何拥有将数组保存在C 中的节点结构
- 有没有办法将大小传递给节点(C++自定义数据容器)中的数组
- 将节点的数组传递到功能并返回一个节点数组
- 节点数组声明
- 使用节点指针数组来指向节点的子节点
- 节点C++插件 - 当类型数组(Float32Array)作为参数传递时,如何访问它?
- 节点缓冲区到字符数组
- 从节点数组和边缘向量获取所有子树的最有效方法是什么
- 我如何使用json解析器的boost property_tree创建空数组节点
- 从n元树中删除动态数组节点时断言错误