在类 Node
中:
class Node {
public:
int data;
int numchild;
Node** nodelist;
Node(int data, int s);
};
我想要一个指向其他节点的指针数组 (nodelist
),这些节点具有来自该节点的边。
以下构造此类数组的方法(以及上述声明它的方法)是否是正确且最好(或最简单)的方法?如果不是,为什么以及最好的方法是什么?
Node::Node(int d, int s) {
data = d;
numchild = s;
nodelist = new Node*[s];
}
最佳答案
通常您不应该重新发明轮子。原始数组几乎总是错误的方法。查看来自 STL 的各种容器,即 std::vector
、std::list
。我猜想在您的情况下,std::vector
可能是最佳解决方案。
如果您想坚持使用原始数组,快速警告:new Node*[s]
不会初始化数组,因此内容将是未定义的。但是,如果您添加一组括号 (new Node*[s]()
),它将被初始化为零,这是一件好事,因为它可以帮助您发现哪些条目已经被填充。
此外,您当前的代码缺少用于再次delete[]
节点列表的析构函数。这正是推荐使用标准容器的原因:它们具有可以为您完成工作的析构函数。
关于c++ - 如何在C++中创建指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6498039/