我有这个结构:
struct problem
{
int length;
struct node **x;
};
我创建了这个结构的结构,如下所示:
struct problem prob;
我可以用C:
这样做prob.x = Malloc(struct node *,prob.length);
但我如何用new
以c ++风格完成?为什么?
答案 0 :(得分:2)
在C ++中,可以用它来实现。
std::vector<node *> problem(length);
您展示的代码有效地模拟了vector
的一小部分功能。即,一个类似于数组的容器,它知道它的大小。
答案 1 :(得分:0)
好的,这段代码可能有用,请注意你不再持有指向指针的指针,而是一个简单的数组 - 这可能适用于你想要做的事情,也可能不适用:
typedef struct tagnode
{
...
} node;
typedef struct tagproblem
{
int length;
node *x;
tagproblem(int len) : length(len)
{
x = new node[length];
}
~tagproblem()
{
delete [] x;
}
} problem;
//Now create...
problem = new problem(2);