队列类结构,我更多的是硬件的人,但芯片设计工具,我使用的是要求我写一些C++代码。我不熟悉面向对象的编程;虽然我有C.办理好什么,我要求的是如何构建我的类(称为cq
)来完成手头任务的说明。可变尺寸和类型
我想能够生成一个指定的数据类型和指定的大小(生成后应该不会改变)的队列。理想情况下,这将是这样做...
my_queue = new cq(uint8_t, 6);
...这将生成六个8位无符号整数的数组(或向量)。
然后,我想的方法既插入一个元素到一个端部和在所述队列的头返回元素如下。
uint8_t front;
front = my_queue.advance(28);
我需要什么样的结构来完成这个?我需要的模板,因为数据类型是可变的?或者我应该有一个泛型类,并且每个数据类型都有一个类继承它的结构?
谢谢!
编辑:使用从下面的答案输入,我已经想出了以下内容:
template <class type>
template <class size>
class CQ {
private:
// Allocates a queue with type and size
// specified by template arguments.
std::queue<type> cycle_queue(size, 0);
public:
// Inserts input to the end of the queue;
// removes and returns the front element.
type advance(type in){
type out = cycle_queue.front();
cycle_queue.push_back(in);
cycle_queue.pop_front();
return out;
}
}
我的问题就变成了......我怎么在我的主C++程序实例呢?再次
CQ<uint8_t><6> my_queue;
my_queue.advance(28);
感谢:我想这一点,但它没有工作!
这似乎确实很有吸引力;然而,这种解决方案是否保持恒定的队列大小?当我开始时,我不希望它是空的。我希望它始终具有我指定的长度并初始化为零。 –
当你从这个容器中移除元素时会发生什么? – Spook
@EvanW:所以你想要一个固定大小的铃声? – sheu