在不使用STL的情况下构建队列队列

时间:2011-02-19 21:51:40

标签: c++ queue

我正在尝试构建一个可用于管理多个数据集的队列队列,但我不确定如何。简单地说明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

甚至可以实现这种数据结构,如果是这样,我应该怎么做呢?

注意:这是一个类分配,我们需要自己编码队列,而不是使用标准模板库。

3 个答案:

答案 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> >以拥有整数队列队列。