queue 是一种先进先出(First In First Out) 的数据结构,它有两个出口。queue 允许新增元素,移除元素,从最低端加入元素,取的顶端的元素。
类似于 stack ,queue 也是一种 container adapter。
#include <iostream>
#include <list>
using namespace std;
template<class T, class Squence = list<T> >
class Queue
{
typedef typename Squence :: value_type value_type;
typedef typename Squence :: reference reference;
typedef typename Squence :: const_reference const_reference;
protected:
Squence c;
public:
bool empty() {return c.empty();}
size_t size() {return c.size();}
reference front() {return *(c.begin());} // 返回队首的元素
void push(const T& x) {return c.push_back(x);} //压入元素
reference back() {return *(--(c.end()));} //返回队尾元素
void pop(){c.pop_front();} //抛出队首元素
public:
bool operator==(const Queue<T,list<T>> & x) {return c==x.c ;}
bool operator!=(const Queue<T,list<T>> & x) {return c!=x.c ;}
};
int main()
{
Queue<int > x;
x.push(1);
x.push(2);
x.push(3);
x.push(4);
x.push(5);
x.push(6);
cout<<x.front()<<endl;
x.pop();
cout<<x.front()<<endl;
}