两个栈模拟队列
按照stl的接口实现。
相关源码如下,缺少异常处理的log,但不影响使用。
#include <stack> #include <iostream> template< typename T> class StackQueue { public: StackQueue() {} ~StackQueue() {} void push(const T& value) { last.push(value); } const T& top() { stack_exchange(); if (first.size() > 0) { return first.top(); } // empty(); } bool empty() { return first.empty() && last.empty(); } void pop() { stack_exchange(); if (first.size() > 0) { first.pop(); return; } // empty } private: void stack_exchange() { if (first.size() <= 0) { while (!last.empty()) { first.push(last.top()); last.pop(); } } } std::stack<T> first; std::stack<T> last; }; int main() { StackQueue<int> queue; int array[] = {1, 2, 3, 4, 5 }; size_t size = sizeof(array)/sizeof(array[0]); for (int i = 0; i < size; ++i) { queue.push(array[i]); } while (!queue.empty()) { // const int& value = queue.top(); std::cout<< queue.top()<< std::endl; queue.pop(); } }