我如何打印队列?

时间:2014-03-09 09:02:49

标签: c++ stl queue

我正在尝试打印下面的队列。我已经尝试过创建临时队列并写入然后再写回来的想法。

但它不起作用。

或者我在这里缺少什么?

            for(int i = 1; i<myQueue.size(); i++)
            {
                queue<int> tempQueue;

                cout << myQueue.front() << endl;
                MytempQueue.push(myQueue.front());
                myQueue.pop();

                myQueue.push(myTempQueue.back());

            }

我的队列是queue<int> myQueue;

基本上我想打印这个队列而不会清空它......但我被困在这里。

1 个答案:

答案 0 :(得分:7)

没有有效的方法来做这个 * 。但是你可以做到以下几点:

  1. 制作队列的副本
  2. 迭代副本,打印正面,然后弹出
  3. 例如,

    #include <queue>
    #include <iostream>
    
    void print_queue(std::queue q)
    {
      while (!q.empty())
      {
        std::cout << q.front() << " ";
        q.pop();
      }
      std::cout << std::endl;
    }
    
    int main()
    {
      std::queue<int> q;
      for (auto i : {1,2,3,7,4,9,7,2,4}) q.push(i);
      print_queue(q);
    }
    

    *有一个使用继承的黑客攻击。 std::queue有一个受保护的成员C,它是保存数据的基础容器。您可以继承std::queue并添加方法以使用C进行打印。但是你必须充分意识到从一个不一定是为此设计的类型继承的含义。