我在我的代码中定义了struct Node,如下所示:
struct Node {
Node() : prev(0), left(0), right(0) {}
Node* prev;
Node* left;
Node* right;
char val;
};
Run Code Online (Sandbox Code Playgroud)
我初始化Node structer对象的数组,如下所示:
Node** pool = new Node*[10000000];
Run Code Online (Sandbox Code Playgroud)
我认为它将使用defoult构造函数创建Node结构对象,但实际上数组似乎是空的.是否有任何有效的方法来创建一系列"空"对象?
你应该使用std::vector<>; new在C++中使用的理由很少.
auto pool = std::vector<Node>(10000000);
Run Code Online (Sandbox Code Playgroud)
(您的原始代码是创建Node*s,而不是Nodes.)
如果由于某种原因你不想使用vector,你可以使用std::unique_ptr<>.那段代码就是
std::unique_ptr<Node[]> pool(new Node[10000000]);
Run Code Online (Sandbox Code Playgroud)
但你真的应该使用vector.
此外,您可以简化和改进Node:
struct Node final {
Node* prev = nullptr;
Node* left = nullptr;
Node* right = nullptr;
char val = '\0';
Node(const Node&) = delete;
Node& operator(const Node&) = delete;
};
Run Code Online (Sandbox Code Playgroud)