長沙做旅游網(wǎng)站公司預(yù)測2025年網(wǎng)絡(luò)營銷的發(fā)展
很多人在聽到適配器的時候,應(yīng)該都是懵的,因為對適配器的理解都是懵懵懂懂,其實他很好理解,就是相當于一個轉(zhuǎn)換器。我們可以這樣理解,就是現(xiàn)實當中是的插排一樣,上面有三個孔的,也有兩個孔的,不管三個孔還是兩個孔,只要我們插上對應(yīng)的充電器,就可以給對應(yīng)的電子產(chǎn)品充電。
雙端隊列:其實雙端隊列底層是非常復(fù)雜的,他比普通的隊列有很大優(yōu)勢(頭插頭刪等),因為這個隊列的兩端都可以進行插入和刪除。所以在進行頭插和頭刪,尾插尾刪等時間復(fù)雜度是O(1)。它的底層是若干個數(shù)組組成的,然后頭一個中控器,其中中控器中有遍歷整個隊列的迭代器,所以,我們可以知道的是,若是在中間插入刪除,最好不要用雙端隊列,如果進行的操作是頭插等,那么,此時可以用雙端隊列。
上面兩個關(guān)鍵的工具介紹完了之后,我們來看看Stack,stack是一個容器適配器,怎么理解呢?可以想一下,我們以前在學數(shù)據(jù)結(jié)構(gòu)的時候,我們的stack有數(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;};
}
這里寫了幾個比較簡單的成員函數(shù),我們可以看到的是,stack的默認適配器是deque,也就是雙端隊列。你也可以傳適配器的參數(shù),個人認為stack是STL中模擬實現(xiàn),比較簡單的了。