#include <iostream>
#include <queue>
#include <stack>
void
reversed_queue_to_stack (
std::queue<int>& src,
std::stack<int>& dst
) {
for (; src.empty () == false; src.pop ())
dst.push (src.front ());
for (; dst.empty () == false; dst.pop ())
src.push (dst.top ());
for (; src.empty () == false; src.pop ())
dst.push (src.front ());
}
int
main (int argc, char *argv[])
{
std::queue<int> q;
std::stack<int> s;
// fill our queue with data
for (int i = 0; i < 10; ++i)
q.push (i);
reversed_queue_to_stack (q, s);
for (; s.empty () == false; s.pop ())
std::cerr << s.top () << " ";
// output: "0 1 2 3 4 5 6 7 8 9 "
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdGFjaz4KCnZvaWQKcmV2ZXJzZWRfcXVldWVfdG9fc3RhY2sgKAogIHN0ZDo6cXVldWU8aW50PiYgc3JjLAogIHN0ZDo6c3RhY2s8aW50PiYgZHN0CikgewoKICBmb3IgKDsgc3JjLmVtcHR5ICgpID09IGZhbHNlOyBzcmMucG9wICgpKQogICAgZHN0LnB1c2ggKHNyYy5mcm9udCAoKSk7CgogIGZvciAoOyBkc3QuZW1wdHkgKCkgPT0gZmFsc2U7IGRzdC5wb3AgKCkpCiAgICBzcmMucHVzaCAoZHN0LnRvcCAgICgpKTsKCiAgZm9yICg7IHNyYy5lbXB0eSAoKSA9PSBmYWxzZTsgc3JjLnBvcCAoKSkKICAgIGRzdC5wdXNoIChzcmMuZnJvbnQgKCkpOwp9CgppbnQKbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogIHN0ZDo6cXVldWU8aW50PiBxOwogIHN0ZDo6c3RhY2s8aW50PiBzOwogIAogIC8vIGZpbGwgb3VyIHF1ZXVlIHdpdGggZGF0YQoKICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpCiAgICBxLnB1c2ggKGkpOwoKICByZXZlcnNlZF9xdWV1ZV90b19zdGFjayAocSwgcyk7CgogIGZvciAoOyBzLmVtcHR5ICgpID09IGZhbHNlOyBzLnBvcCAoKSkKICAgIHN0ZDo6Y2VyciA8PCBzLnRvcCAoKSA8PCAiICI7CiAgCiAgLy8gb3V0cHV0OiAiMCAxIDIgMyA0IDUgNiA3IDggOSAiCn0=