class Node
{
int x,y;
Node *left, *right;
Node(int x, int y);
Node();
};
如何使用此方法制作双端队列?
deque<Node> balBinaryTree;
给我错误
syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
--- ---编辑
--- ---编辑 我也应该这样做
deque<Node> balBinaryTree;
或
deque<Node*> balBinaryTree;
答案 0 :(得分:1)
#include <deque>
std::deque<Node> balBinaryTree;
我也应该这样做
deque<Node> balBinaryTree;
或
deque<Node*> balBinaryTree;
你应该自己决定。
deque<Node>
会导致不必要的复制。
deque<Node*>
导致可能的内存管理问题。
答案 1 :(得分:0)
#include <deque>
#include <memory>
std::deque<std::shared_ptr<Node>> balBinaryTree;
这将为您处理内存管理,意味着您不必明确担心内存管理。
注意:你在Node中使用裸指针,所以要小心并确保对象的生命周期超过原始指针,这样你就不会泄漏。
答案 2 :(得分:0)
如果您正在使用:
deque<Node> balBinaryTree
你可能想要使用emplace调用
balBinaryTree.emplace_back(x,y)
调用构造函数并同时插入。将避免必须像deque<Node*>
那样处理内存管理,并避免发生额外的副本,如下所示:
deque<Node> balBinaryTree;
Node inst_node(10,20);
balBinaryTree.push_back( inst_node )