我如何打印队列?

use*_*034 5 c++ queue stl

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

但它不起作用.

或者我在这里失踪了什么?

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

            }
Run Code Online (Sandbox Code Playgroud)

我的队列是 queue<int> myQueue;

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

jua*_*nza 7

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

  1. 制作队列的副本
  2. 迭代副本,打印前面,然后弹出它

例如,

#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);
}
Run Code Online (Sandbox Code Playgroud)

*有一个使用继承的黑客攻击.std::queue有一个受保护的成员C,它是保存数据的底层容器.您可以继承std::queue并添加方法来进行打印C.但是你必须完全了解从一个不一定是为此设计的类型继承的含义.

  • `queue&lt;int&gt; copy = myQueue;` (2认同)