Jae*_*ebi 2 c++ arrays pointers
我想初始化一个指向我所做的NODE结构的指针数组
struct Node{
int data;
Node* next;
};
the private member of my other class is declared as
Node** buckets;
Run Code Online (Sandbox Code Playgroud)
它目前初始化为buckets = new Node*[SIZE]
无论如何都要初始化数组,使其成员指向NULL或其他一些预定义的Node指针?
编辑:我正在寻找一种初始化它的方法,而不是试图生成一个for循环遍历数组的完整长度.数组的大小在运行时确定.
编辑2:我试过std :: fill_n(buckets,SIZE_OF_BUCKET,NULL); 但编译器给出错误"无法从'const int'转换为'Node*'"我正在使用visual studio 2008.我有什么问题吗?
首先,最简单的解决方案是执行以下操作:
Node** buckets = new Node*[SIZE]();
Run Code Online (Sandbox Code Playgroud)
正如之前所述的litb,这将初始化SIZE指向空指针的指针.
但是,如果你想要做这样的事情Node **buckets,并初始化所有的指针为特定值,那么我建议std::fill_n从<algorithm>
Node **buckets = new Node*[SIZE];
std::fill_n(buckets, SIZE, p);
Run Code Online (Sandbox Code Playgroud)
这会将每个Node*' 设置为p分配后.
此外,如果您希望Node在构造中具有合理的成员值,那么正确的方法是使用构造函数.像这样的东西:
struct Node {
Node() : data(0), next(NULL){}
Node(int d, Node *n = NULL) : data(d), next(n) {}
int data;
Node* next;
};
Run Code Online (Sandbox Code Playgroud)
这样你可以这样做:
Node *p = new Node();
Run Code Online (Sandbox Code Playgroud)
并且它将使用0和NULL正确初始化,或者
Node *p = new Node(10, other_node);
Run Code Online (Sandbox Code Playgroud)
最后,这样做:
Node *buckets = new Node[N]();
Run Code Online (Sandbox Code Playgroud)
将构造N Node对象并默认构造它们.
| 归档时间: |
|
| 查看次数: |
3489 次 |
| 最近记录: |