你好,我有下面的函数,它打印队列的元素
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>>(); 但是如何打印"my_queue_of_queues“队列的所有元素呢?
发布于 2017-02-16 15:54:10
但是如何打印"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;
}发布于 2017-02-16 15:50:44
如果您不想更改您的print()实现,只需定义一个operator<<(std::ostream&, const queue<T>&)重载就可以了
template <typename T>
auto& operator<<(std::ostream& os, const queue<T>& x)
{
x.print();
return os;
}https://stackoverflow.com/questions/42278442
复制相似问题