c++ - 使用 NULL 值初始化指向类的指针

标签 c++ arrays pointers

我正在尝试初始化指向我创建的 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/

相关文章:

arrays - 使用可分配数组的性能损失

c++ - int(*a)的解释[3]

c++ - 有什么合理的理由使一元运算符 & 过载?

c++ - QWidget 在另一个小部件上

javascript - 如何使用扩展语法删除第一个数组元素

c - 访问嵌套结构成员的多种方式

c - 使用数组的段错误

c++ abort() 已在 rapidjson 上被调用

c++ - 如何确保在 notify_one 之前调用 wait_for

c - 解析字符数组时出现段错误