当队列在模板中时将事物放入队列?

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"