#include<stack>
#include<iostream>
using namespace std;
template<typename T>
class Queue
{
public:
//Queue(){};
//~Queue(){};
void EnQueue(const T &t);
void DeQueue();
T Front();
private:
stack<T> s1;//s1入队列用
stack<T> s2;//s2出队列用
};
template<typename T>
void Queue<T>::EnQueue(const T &t)
{
s1.push(t);
}
template<typename T>
void Queue<T>::DeQueue()
{
if(s2.empty())
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
}
if(!s2.empty())
s2.pop();
}
template<typename T>
T Queue<T>::Front()
{
if(s2.empty())
{
if(s1.empty()) throw;
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
}
return s2.top();
}
int main()
{
Queue<int> q;
q.EnQueue(1);
cout<<q.Front()<<endl;
q.DeQueue();
q.DeQueue();//如果队列为空,DeQueue什么也不做
return 1;
}