??樊梓慕:個(gè)人主頁
???個(gè)人專欄:《C語言》《數(shù)據(jù)結(jié)構(gòu)》《藍(lán)橋杯試題》《LeetCode刷題筆記》《實(shí)訓(xùn)項(xiàng)目》《C++》《Linux》《算法》
??每一個(gè)不曾起舞的日子,都是對(duì)生命的辜負(fù)
前言
stack與queue的實(shí)現(xiàn)比較簡(jiǎn)單,本篇不會(huì)有太大的篇幅,但值得我們學(xué)習(xí)的是『 適配器』的概念。
歡迎大家??收藏??以便未來做題時(shí)可以快速找到思路,巧妙的方法可以事半功倍。
=========================================================================
GITEE相關(guān)代碼:??fanfei_c的倉庫??
=========================================================================
1.適配器
stack與queue并不屬于容器,而是『 適配器』。
適配器其實(shí)就是對(duì)已經(jīng)存在的容器進(jìn)行封裝得到的。
在STL標(biāo)準(zhǔn)庫中,stack與queue的底層默認(rèn)使用deque容器。
?deque我們本篇文章不介紹,大家只需要知道他類似于vector與list,并且deque具有他們兩個(gè)容器的特性即可。
適配器就像是我們的充電器,我國家庭電路電壓為220v,但卻可以通過不同的電源適配器達(dá)到不同的功率。
模板參數(shù)的這一用法我們上篇文章提到過:
當(dāng)我們不傳模板參數(shù)時(shí),stack與queue都默認(rèn)使用deque容器來構(gòu)建?;蛘哧?duì)列,但我們也可以自己設(shè)定模板參數(shù),就如同之前學(xué)習(xí)『 數(shù)據(jù)結(jié)構(gòu)』時(shí),棧或者隊(duì)列既有順序結(jié)構(gòu)也有鏈?zhǔn)浇Y(jié)構(gòu)一樣,在『 C++』中,我們只需要設(shè)定模板參數(shù),即可實(shí)現(xiàn)順序棧、順序隊(duì)列或者鏈棧、鏈隊(duì)列,這就體現(xiàn)出了模板參數(shù)的妙用。
2.模擬實(shí)現(xiàn)源碼
2.1stack
template<class T, class Container = deque<T>>
class stack
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_back();
}
const T& top()
{
return _con.back();
}
size_t size()
{
return _con.size();
}
bool empty()
{
return _con.empty();
}
private:
Container _con;
};
2.2queue
template<class T, class Container = deque<T>>
class queue
{
public:
void push(const T& x)
{
_con.push_back(x);
}
void pop()
{
_con.pop_front();
}
const T& front()
{
return _con.front();
}
const T& back()
{
return _con.back();
}
size_t size()
{
return _con.size();
}
bool empty()
{
return _con.empty();
}
private:
Container _con;
};
2.3如何實(shí)現(xiàn)底層基于vector或list的?;蜿?duì)列呢?
其實(shí)非常簡(jiǎn)單,就是將對(duì)應(yīng)的模板參數(shù)設(shè)定為vector或list即可,比如:
int main()
{
stack<int,vector<int>> s;
s.push(1);
s.push(2);
s.push(3);
s.push(4);
while (!s.empty())
{
cout << s.top() << " ";
s.pop();
}
cout << endl;
return 0;
}
另外注意:文章來源:http://www.zghlxwxcb.cn/news/detail-820366.html
- 函數(shù)參數(shù)傳參是在『 使用時(shí)傳參』,傳遞的是『 對(duì)象』;
- 模板參數(shù)傳參是在『 編譯時(shí)傳參』,傳遞的是『 類型』。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-820366.html
到了這里,關(guān)于【C++】stack與queue的模擬實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!