0
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;
4

3 回答 3

1
#include <deque>
std::deque<Node> balBinaryTree;

我也应该这样做

deque<Node> balBinaryTree;或者

deque<Node*> balBinaryTree;

你应该自己决定。 deque<Node>导致不必要的复制。 deque<Node*>导致可能的内存管理问题。

于 2012-05-23T17:07:33.713 回答
0
#include <deque>
#include <memory>
std::deque<std::shared_ptr<Node>> balBinaryTree;

这会为您处理内存管理,这意味着您不必明确地担心内存管理。

注意:您在节点中使用裸指针,所以要小心并确保对象的生命周期比原始指针长,以免泄漏。

于 2012-05-23T17:41:01.887 回答
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 )
于 2018-03-29T17:57:24.367 回答