目錄
- queue的作用
- 什么是容器適配器
- queue的接口
- 構造函數
- empty
- size
- front
- back
- queue類的實現
queue的作用
queue是stl庫提供的一種容器適配器,也就是我們數據結構中學到的隊列,是非常常用的數據結構,特點是遵循LILO(last in last out,也就是后進后出)原則。
什么是容器適配器
stl中提供的類很多都叫容器,但有一些叫做容器適配器,容器適配器到底是啥呢?我們不妨先拋掉容器這兩個字,先來談談適配器,適配器是軟件設計之中的一種概念,即基于原有的接口設計適配出用戶想要的接口,是一種設計模式,適配器這種設計模式提升了代碼復用性以及系統擴展性,降低了代碼的耦合度,是一種優秀的設計模式。那么對于容器適配器來說,就是利用已有的容器進行各種操作封裝出新的類,這就叫容器適配器。
queue的接口
構造函數
explicit queue (const container_type& ctnr = container_type());
一般來說不用給參數,直接調用默認構造就行。
empty
bool empty() const;
隊列的判空。
size
size_type size() const;
返回隊列的元素數。
front
value_type& front();
const value_type& front() const;
返回隊列的第一個元素。
back
value_type& back();
const value_type& back() const;
返回隊列的最后一個元素。
queue類的實現
#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<deque>using namespace std;namespace jiunian
{template<class T, class container = deque<T>>class queue{public:typedef queue<T, container> Self;//queue()//{//}//queue(Self& x):// con(x.con)//{//}//~queue()//{//}bool empty() const{return con.empty();}size_t size() const{return con.size();}T& front(){return con.front();}const T& front() const{return con.front();}T& back(){return con.back();}const T& back() const{return con.back();}void push(const T& val){con.push_back(val);}void pop(){con.pop_front();}void swap(Self& x){con.swap(x.con);}Self operator=(Self& x){con = x.con;return *this;}private:container con;};
}
queue作為一個容器適配器,實現起來相比其他容器明顯簡單了不少,因為其作為容器適配器只需要對其他容器的接口進行封裝就行,不需要自己造輪子。實現過程一看就懂,不做過多贅述。