如何方便地打印std :: stack或std :: queue中的所有元素 [英] how to print out all elements in a std::stack or std::queue conveniently
本文介绍了如何方便地打印std :: stack或std :: queue中的所有元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我不想创建一个新的容器,为了这样做?
If I do not to want to create a new container in order to do so?
非常感谢!
推荐答案
我写了一个代码片段来做调试。例如:
I've written a snippet to do that for debugging. For example:
std::stack<int> s; // works with std::queue also!
s.push(1);
s.push(2);
std::cout << s; // [ 1, 2 ]
请原谅我这个黑客代码!但这是我几个月前写的:
Please forgive me for this hackish code! but this is what I've written months ago:
#include <stack>
#include <queue>
#include <ostream>
template <class Container, class Stream>
Stream& printOneValueContainer
(Stream& outputstream, const Container& container)
{
typename Container::const_iterator beg = container.begin();
outputstream << "[";
while(beg != container.end())
{
outputstream << " " << *beg++;
}
outputstream << " ]";
return outputstream;
}
template < class Type, class Container >
const Container& container
(const std::stack<Type, Container>& stack)
{
struct HackedStack : private std::stack<Type, Container>
{
static const Container& container
(const std::stack<Type, Container>& stack)
{
return stack.*&HackedStack::c;
}
};
return HackedStack::container(stack);
}
template < class Type, class Container >
const Container& container
(const std::queue<Type, Container>& queue)
{
struct HackedQueue : private std::queue<Type, Container>
{
static const Container& container
(const std::queue<Type, Container>& queue)
{
return queue.*&HackedQueue::c;
}
};
return HackedQueue::container(queue);
}
template
< class Type
, template <class Type, class Container = std::deque<Type> > class Adapter
, class Stream
>
Stream& operator<<
(Stream& outputstream, const Adapter<Type>& adapter)
{
return printOneValueContainer(outputstream, container(adapter));
}
您可以串流 std :: stack
和 std :: queue
就像任何其他支持的类型!
You can stream std::stack
and std::queue
just like any other supported type!
这篇关于如何方便地打印std :: stack或std :: queue中的所有元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文