简单,但找不到:使用类型类的 STL 队列的成员变量的语法



这个问题是作业帮助;我没有看到有关此规则的东西。

这是我的功能:

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();
    }
}

最新更新