打印队列元素的队列

时间:2017-02-16 15:42:24

标签: c++

您好我有以下函数打印队列的元素

 template<typename T>
 void queue<T>::print()
{
T x;
while(!empty())
{
    pop(x);
    cout<<x<<" ";
}

} 我已经建立了这样的队列队列

 queue< queue<int> > my_queue_of_queues =queue< queue<int>>(); 

但是如何打印&#34; my_queue_of_queues&#34;的排队的所有元素?

2 个答案:

答案 0 :(得分:2)

  

但是如何打印“my_queue_of_queues”队列的所有元素?

选项1 使用operator<<代替print

template<typename T>
std::ostream& operator<<(std::ostream& out,  queue<T> const& q)
{
   // Don't modify the input.
   // Create a copy and modify the copy.
   queue<T> copy(q);
   while(!copy.empty())
   {
      T x;
      copy.pop(x);
      out << x << " ";
   }
   return out;
}

选项2 更新print并调用operator<<函数重定向实施。

template<typename T>
void queue<T>::print()
{
   cout << *this;
}

选项3 更新print并致电operator<<函数重定向实施,但将std::ostream传递给print。不要在cout中假设print

template<typename T>
void queue<T>::print(std::ostream& out)
{
   out << *this;
}

答案 1 :(得分:1)

如果您不想更改print()实施,只需定义一个operator<<(std::ostream&, const queue<T>&)重载,它就会正常工作

template <typename T>
auto& operator<<(std::ostream& os, const queue<T>& x)
{
    x.print();
    return os;
}