当队列在模板中时将事物放入队列?
Putting things into a queue when the queue is in a template?
假设我有一些可以工作的二叉搜索树,并像这样声明了两个:
BinaryTree<string, queue<int> > * tree1 = new BinaryTree<string, queue<int>>;
BinaryTree<string, int> * tree2 = new BinaryTree<string, int >;
让我们说第二个效果很好:
tree2->Add("Yoyo", 10);
您将如何向将第二个参数作为队列的那个值添加值?
由于通常您需要声明某种类型的对象以添加到队列中,在这种意义上我该怎么做?
假设您的二叉树 class 声明为
template <typename T, typename U>
class BinaryTree
...
Add(T, U);
我猜你只能添加一个预构建的队列
BinaryTree<string, queue<int>> tree;
tree.Add("foo", queue<int>());
// or
queue<int> q;
q.push_back(1);
...
tree.add("bar", q);
要在添加后修改队列,您需要一个访问方法
template <typename T, typename U>
class BinaryTree
...
Add(T, U);
U& Get(T);
用作
BinaryTree<string, queue<int>> tree;
tree.Add("foo", queue<int>());
tree.Get("foo").push_back(1); // Modifies queue at "foo"
假设我有一些可以工作的二叉搜索树,并像这样声明了两个:
BinaryTree<string, queue<int> > * tree1 = new BinaryTree<string, queue<int>>;
BinaryTree<string, int> * tree2 = new BinaryTree<string, int >;
让我们说第二个效果很好:
tree2->Add("Yoyo", 10);
您将如何向将第二个参数作为队列的那个值添加值?
由于通常您需要声明某种类型的对象以添加到队列中,在这种意义上我该怎么做?
假设您的二叉树 class 声明为
template <typename T, typename U>
class BinaryTree
...
Add(T, U);
我猜你只能添加一个预构建的队列
BinaryTree<string, queue<int>> tree;
tree.Add("foo", queue<int>());
// or
queue<int> q;
q.push_back(1);
...
tree.add("bar", q);
要在添加后修改队列,您需要一个访问方法
template <typename T, typename U>
class BinaryTree
...
Add(T, U);
U& Get(T);
用作
BinaryTree<string, queue<int>> tree;
tree.Add("foo", queue<int>());
tree.Get("foo").push_back(1); // Modifies queue at "foo"