template<class T, class Container = deque<T>>
class Queue{
public:
void Push(const T& x){
_con.push_back(x);
}
void Pop(){
_con.pop_front(); //不是vector的成员函数
}
size_t Size(){
_con.size();
}
bool Empty(){
return _con.empty();
}
const T& Front(){
return _con.front();
}
const T& Back(){
return _con.back();
}
private:
Container _con;
};
测试代码:
void TestQueue() {
/* 都支持 */
/*适配体现在第二个模板参数可以使用不同的容器,然后适配生成的queue效果是一样的*/
//Queue<int, list<int>> q;
//Queue<int, deque<int>> q;
Queue<int, vector<int>> q; //vector没有pop_front()方法,需要用户显示给出即可支持
q.Push(1);
q.Push(2);
q.Push(3);
q.Push(4);
while (!q.Empty()) {
cout << q.Front() << endl;
q.Pop();
}
}
输出结果:
1
2
3
4