首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >队列元素的打印队列

队列元素的打印队列
EN

Stack Overflow用户
提问于 2017-02-16 15:42:23
回答 2查看 888关注 0票数 0

你好,我有下面的函数,它打印队列的元素

代码语言:javascript
运行
复制
 template<typename T>
 void queue<T>::print()
{
T x;
while(!empty())
{
    pop(x);
    cout<<x<<" ";
}

}我已经排成了这样的队列

代码语言:javascript
运行
复制
 queue< queue<int> > my_queue_of_queues =queue< queue<int>>(); 

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-16 15:54:10

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

选项1使用operator<<而不是print

代码语言:javascript
运行
复制
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<<函数重新定向实现.

代码语言:javascript
运行
复制
template<typename T>
void queue<T>::print()
{
   cout << *this;
}

选项3更新print并调用operator<<函数重定向实现,但将std::ostream传递给print。不要假设coutprint中。

代码语言:javascript
运行
复制
template<typename T>
void queue<T>::print(std::ostream& out)
{
   out << *this;
}
票数 2
EN

Stack Overflow用户

发布于 2017-02-16 15:50:44

如果您不想更改您的print()实现,只需定义一个operator<<(std::ostream&, const queue<T>&)重载就可以了

代码语言:javascript
运行
复制
template <typename T>
auto& operator<<(std::ostream& os, const queue<T>& x)
{
    x.print();
    return os;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42278442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档