Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在deque中使用用户定义的类?_C++_Stl - Fatal编程技术网

C++ 如何在deque中使用用户定义的类?

C++ 如何在deque中使用用户定义的类?,c++,stl,C++,Stl,我怎样用这个做一个deque class Node { int x,y; Node *left, *right; Node(int x, int y); Node(); }; deque balBinaryTree; 给了我错误 deque<Node> balBinaryTree; 语法错误:缺少“;”在“”之前包括 std::德克巴尔二叉树; 我也应该这样做吗 deque balBinaryTree或 deque balBinaryTree

我怎样用这个做一个deque

class Node
{
    int x,y;
    Node *left, *right;
    Node(int x, int y);
    Node();
};
deque balBinaryTree;
给了我错误

deque<Node> balBinaryTree;
语法错误:缺少“;”在“
”之前包括
std::德克巴尔二叉树;
我也应该这样做吗

deque balBinaryTree

deque balBinaryTree

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

\include
#include <deque>
std::deque<Node> balBinaryTree;
#包括 std::德克巴尔二叉树;
这为您提供了内存管理,意味着您不必明确地担心内存管理

注意:您正在节点中使用裸指针,因此请小心,确保对象的生存期超过原始指针,以免泄漏。

如果您使用:

deque balBinaryTree

你可能会想使用定位呼叫

balBinaryTree.emplace_back(x,y)
调用构造函数并同时插入。将避免必须像处理
deque
那样处理内存管理,并避免出现以下情况下的额外副本:

#include <deque>
#include <memory>
std::deque<std::shared_ptr<Node>> balBinaryTree;
deque balBinaryTree;
节点安装节点(10,20);
balBinaryTree.push_back(inst_节点)
两个
deque
deque
都是正确的。如果使用第一个,则在deque中推回的节点对象的副本将添加到容器的末尾。你应该记住这一点。
  deque<Node*> balBinaryTree;
#include <deque>
std::deque<Node> balBinaryTree;
#include <deque>
#include <memory>
std::deque<std::shared_ptr<Node>> balBinaryTree;
deque<Node> balBinaryTree;
Node inst_node(10,20); 
balBinaryTree.push_back( inst_node )