我想初始化一个指向我制作的NODE结构的指针数组
struct Node{
int data;
Node* next;
};
the private member of my other class is declared as
Node** buckets;
目前已初始化为 buckets = new Node * [SIZE]
无论如何都要初始化数组以使其成员指向NULL或其他预定义的Node指针?
编辑:我正在寻找一种初始化它的方法,而不是试图生成一个for循环来遍历整个数组长度。数组的大小在运行时确定。编辑2:我试过std :: fill_n(buckets,SIZE_OF_BUCKET,NULL);但编译器给出错误“无法从'const int'转换为'Node *'”我正在使用visual studio 2008.我有什么问题吗?
答案 0 :(得分:7)
首先,最简单的解决方案是执行以下操作:
Node** buckets = new Node*[SIZE]();
如前所述litb,这将初始化SIZE
指向空指针的指针。
但是,如果您想执行Node **buckets
之类的操作并初始化指向特定值的所有指针,那么我建议 {{1} std::fill_n
}}
<algorithm>
这会在分配后将每个Node **buckets = new Node*[SIZE];
std::fill_n(buckets, SIZE, p);
设置为Node*
。
此外,如果您希望Node在构造中具有合理的成员值,那么正确的方法是使用构造函数。像这样:
p
这样你可以这样做:
struct Node {
Node() : data(0), next(NULL){}
Node(int d, Node *n = NULL) : data(d), next(n) {}
int data;
Node* next;
};
它将使用0和NULL或
正确初始化Node *p = new Node();
最后,这样做:
Node *p = new Node(10, other_node);
将构造Node *buckets = new Node[N]();
N
个对象并默认构造它们。
答案 1 :(得分:1)
如果你的数组指的是数组buckets
,那么是的。只需设置buckets = NULL
。
编辑:根据您的问题编辑,只需使用memset。
memset(buckets, 0, NUM_ELEMENTS_IN_BUCKETS*sizeof(Node*));