長(zhǎng)沙做旅游網(wǎng)站公司預(yù)測(cè)2025年網(wǎng)絡(luò)營(yíng)銷的發(fā)展
很多人在聽到適配器的時(shí)候,應(yīng)該都是懵的,因?yàn)閷?duì)適配器的理解都是懵懵懂懂,其實(shí)他很好理解,就是相當(dāng)于一個(gè)轉(zhuǎn)換器。我們可以這樣理解,就是現(xiàn)實(shí)當(dāng)中是的插排一樣,上面有三個(gè)孔的,也有兩個(gè)孔的,不管三個(gè)孔還是兩個(gè)孔,只要我們插上對(duì)應(yīng)的充電器,就可以給對(duì)應(yīng)的電子產(chǎn)品充電。
雙端隊(duì)列:其實(shí)雙端隊(duì)列底層是非常復(fù)雜的,他比普通的隊(duì)列有很大優(yōu)勢(shì)(頭插頭刪等),因?yàn)檫@個(gè)隊(duì)列的兩端都可以進(jìn)行插入和刪除。所以在進(jìn)行頭插和頭刪,尾插尾刪等時(shí)間復(fù)雜度是O(1)。它的底層是若干個(gè)數(shù)組組成的,然后頭一個(gè)中控器,其中中控器中有遍歷整個(gè)隊(duì)列的迭代器,所以,我們可以知道的是,若是在中間插入刪除,最好不要用雙端隊(duì)列,如果進(jìn)行的操作是頭插等,那么,此時(shí)可以用雙端隊(duì)列。
上面兩個(gè)關(guān)鍵的工具介紹完了之后,我們來(lái)看看Stack,stack是一個(gè)容器適配器,怎么理解呢?可以想一下,我們以前在學(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候,我們的stack有數(shù)組棧和鏈棧,所以,此時(shí)在理解,就比較好理解了。那么它的代碼實(shí)現(xiàn)是什么呢?如下:
#include <iostream>
#include <queue>
using namespace std;
namespace cc
{template<class T, class contain=deque<T>>class Stack{public:void push(const T& x){_con.push_back(x);}T& top() {return _con.back();}void pop(){_con.pop_back();}bool empty()const{return _con.size();}size_t size()const{return _con.size();}private:contain _con;};
}
這里寫了幾個(gè)比較簡(jiǎn)單的成員函數(shù),我們可以看到的是,stack的默認(rèn)適配器是deque,也就是雙端隊(duì)列。你也可以傳適配器的參數(shù),個(gè)人認(rèn)為stack是STL中模擬實(shí)現(xiàn),比較簡(jiǎn)單的了。