我正在尝试构建一个可用于管理多个数据集的队列队列,但我不确定如何。简单地说明queue<queue>
不起作用并返回以下错误:
error: type/value mismatch at argument 1 in template parameter list for ‘template<class Type> class queue’
main.cpp:18: error: expected a type, got ‘queue’
main.cpp:18: error: invalid type in declaration before ‘;’ token
make: *** [main.o] Error 1
甚至可以实现这种数据结构,如果是这样,我应该怎么做呢?
注意:这是一个类分配,我们需要自己编码队列,而不是使用标准模板库。
答案 0 :(得分:5)
队列必须具有类型。你正在创建一个队列队列....没有。所以它正在读取queue
和<
内部的令牌>
作为错误,而不是类型。从技术上讲,queue
不是一种类型。 queue<int>
是一种类型。
您想编写自己的队列类或自己的队列类队列吗?我建议你编写自己的模板化队列类......然后将自己的模板实例化为值类型。
int
s的队列队列? queue< queue<int> >
。无论是STL队列还是您自己的队列。
注意:当您使用模板类型作为另一个模板的参数时,必须在其周围放置空格。这是因为>>
中的queue<queue<int>>
被解释为>>
运算符,这是由于解析中的“最大蒙克”规则。完全不相关的注释,写了很多次开始弄乱你的眼睛的队列......
答案 1 :(得分:1)
您获得的特定错误是队列是模板类,因此您需要在使用它的任何位置指定它的参数。因此写作
queue<queue>
是非法的,因为内部队列没有任何参数。
绝对可以编写自己的队列队列 - 实际上,可以编写任何STL容器类 - 但是使用队列开始并不是正确的方法。如果要创建队列队列,首先要考虑如何创建一个简单的队列。你会用什么实现?你会如何跟踪元素的数量?会使用动态数组吗?链表,哈希表或二叉搜索树怎么样?每个结构都有其优点和缺点,所以一定要在开始之前考虑一下。
一旦你有一个好的队列实现,你可以对它进行参数化,使你的队列成为一个模板,你可以从中轻松地建立队列队列。
希望这有帮助,祝你好运!
答案 2 :(得分:0)
您需要定义第二个队列的类型,例如queue<queue<int> >
以拥有整数队列队列。