#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 "
}