这个问题是作业帮助;我没有看到有关此规则的东西。
这是我的功能:
void display_queue(queue<cat> original_queue)
{
int dummy_integer;
queue<cat> dummy_queue;
cout << endl << "The queue contains: " << endl;
//reads out the first q while moving values to second q
while (!original_queue.empty())
{
cout << ' ' << original_queue.front().ears;
dummy_integer = original_queue.front().ears;
original_queue.pop();
dummy_queue.push(dummy_integer).ears;
}
//put the values from q2 back to q1
while (!dummy_queue.empty())
{
dummy_integer = dummy_queue.front().ears;
dummy_queue.pop();
original_queue.push(dummy_integer).ears;
}
}
这是我较大的程序中的剥离,重命名的功能模型,它是为了模拟内核的过程管理方面。虽然我可以在队列时成功显示队列的内容,但是当它是这些角度括号内的类时,我并没有遇到语法。
我的错误语法在我试图使用.push
的线上,我觉得我尝试了所有可能的选择,但显然这是错误的,我只是在烦恼。
有人确切地知道如何写它吗?
假设您有一个构造函数cat::cat(int)
,则可以在队列中添加新的cat
对象:
dummy_queue.push(cat(dummy_integer));
但是,一个更大的问题是您是否需要完成所有这些项目。STL queue
模板具有人为的限制,因为他们不揭露其物品上的迭代方式。考虑使用deque
,这将使您无需删除并重新插入其内容。
void display_queue(const deque<cat> &queue)
{
cout << endl << "The queue contains: " << endl;
while (deque<cat>::const_iterator cat = queue.begin(); cat != queue.end(); ++cat)
{
cout << ' ' << cat->ears;
}
}
另外,您至少可以通过简单地迭代原始队列的副本来简化代码。如果您销毁了它的副本,则无需恢复原始队列。
这也可以使您进行不错的优化并将参数更改为const queue &
。这将使来自呼叫者的原始队列作为参考而不是复制。
void display_queue(const queue<cat> &original_queue)
{
queue<cat> queue_copy(original_queue);
cout << endl << "The queue contains: " << endl;
while (!queue_copy.empty())
{
cout << ' ' << queue_copy.front().ears;
queue_copy.pop();
}
}