我正在尝试初始化指向我创建的 NODE 结构的指针数组
struct Node{
int data;
Node* next;
};
the private member of my other class is declared as
Node** buckets;
目前初始化为 buckets = 新节点*[SIZE]
有没有办法初始化数组,使其成员指向 NULL 或其他一些预定义的节点指针?
编辑:我正在寻找一种方法来初始化它,而不是尝试生成一个 for 循环来遍历数组的整个长度。数组的大小在运行时确定。
编辑 2:我试过 std::fill_n(buckets, SIZE_OF_BUCKET, NULL);但是编译器给出错误“无法从‘const int’转换为‘Node *’”我正在使用 visual studio 2008。我做错了什么吗?
最佳答案
首先,最简单的解决方案是执行以下操作:
Node** buckets = new Node*[SIZE]();
作为litb前面说过,这将值初始化 SIZE
指向空指针的指针。
但是,如果您想执行类似 Node **buckets
的操作并将所有指针初始化为特定值,那么我推荐 std::fill_n
来自 <algorithm>
Node **buckets = new Node*[SIZE];
std::fill_n(buckets, SIZE, p);
这将设置每个 Node*
' 到 p
分配后。
此外,如果你想让Node在构造时有正常的成员值,正确的方法是有一个构造函数。像这样:
struct Node {
Node() : data(0), next(NULL){}
Node(int d, Node *n = NULL) : data(d), next(n) {}
int data;
Node* next;
};
这样你就可以这样做:
Node *p = new Node();
它会被正确初始化为 0 和 NULL,或者
Node *p = new Node(10, other_node);
最后,这样做:
Node *buckets = new Node[N]();
将构建N
Node
对象和默认构造它们。
关于c++ - 使用 NULL 值初始化指向类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1338742/