C++ 如何在deque中使用用户定义的类?
我怎样用这个做一个dequeC++ 如何在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
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 )