国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[ C++ ] STL---stack與queue

這篇具有很好參考價(jià)值的文章主要介紹了[ C++ ] STL---stack與queue。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

stack簡(jiǎn)介

stack的常用接口

queue簡(jiǎn)介

queue的常用接口

stack的模擬實(shí)現(xiàn)

queue的模擬實(shí)現(xiàn)


stack簡(jiǎn)介

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

1. stack是具有后進(jìn)先出操作的一種容器適配器,其只能從容器的一端進(jìn)行元素的插入與刪除操作;

2. stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器即是對(duì)特定類封裝作為其底層的容器,并提供一組特定的成員函數(shù)來(lái)訪問(wèn)其元素,將特定類作為其底層的,元素特定容器的尾部(即棧頂)被壓入和彈出

3. stack的底層容器可以是任何標(biāo)準(zhǔn)的容器類模板或者一些其他特定的容器類,這些容器類應(yīng)該支持以下操作

empty:判空操作

back:獲取尾部元素操作

push_back:尾部插入元素操作

pop_back:尾部刪除元素操作

4. 標(biāo)準(zhǔn)容器vector、deque、list均符合這些需求,默認(rèn)情況下,如果沒有為stack指定特定的底層容器,默認(rèn)情況下使用deque

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

stack官方文檔:stack - C++ Reference

stack的常用接口

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

int main()
{
	stack<int> st;
	//入棧順序:1,2,3,4
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);

	cout << "size=" << st.size() << endl;
	while (!st.empty())//判斷棧是否為空
	{
		//非空取棧頂元素
		cout << st.top() << " ";
		//出棧
		st.pop();
	}
	cout << endl;
	return 0;
}

?運(yùn)行結(jié)果:

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

queue簡(jiǎn)介

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

1. 隊(duì)列是一種容器適配器,專門用于在FIFO上下文(先進(jìn)先出)中操作,其中從容器一端插入元素,另一端提取元素

2. 隊(duì)列作為容器適配器實(shí)現(xiàn),容器適配器即將特定容器類封裝作為其底層容器類,queue提供一組特定的成員函數(shù)來(lái)訪問(wèn)其元素;元素從隊(duì)尾入隊(duì)列,從隊(duì)頭出隊(duì)列

3. 底層容器可以是標(biāo)準(zhǔn)容器類模板之一,也可以是其他專門設(shè)計(jì)的容器類,該底層容器至少支持以下操作:

empty:檢測(cè)隊(duì)列是否為空

size:返回隊(duì)列中有效元素的個(gè)數(shù)

front:返回隊(duì)頭元素的引用

back:返回隊(duì)尾元素的引用

push_back:在隊(duì)列尾部入隊(duì)列

pop_front:在隊(duì)列頭部出隊(duì)列

4. 標(biāo)準(zhǔn)容器類deque和list滿足了這些要求,默認(rèn)情況下,如果沒有為queue實(shí)例化指定容器類,則使用標(biāo)準(zhǔn)容器deque;

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

?queue官方文檔:queue - C++ Reference

queue的常用接口

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

int main()
{
	queue<int> q;
	//入隊(duì)列順序:1 2 3 4
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);

	//計(jì)算隊(duì)列中元素的個(gè)數(shù)
	cout << "size=" << q.size() << endl;
	//取隊(duì)列的尾部元素
	cout << "back=" << q.back() << endl;
	while (!q.empty())//判斷隊(duì)列是否為空
	{
		//非空取隊(duì)列頭部元素
		cout << q.front() << " ";
		//出隊(duì)列
		q.pop();
	}
	cout << endl;
	return 0;
}

?運(yùn)行結(jié)果:

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

stack的模擬實(shí)現(xiàn)

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

?容器適配器:

  1. ? 已有的基本容器vector/list/deque相當(dāng)于一臺(tái)設(shè)備,這臺(tái)設(shè)備支持的操作很多,比如插入,刪除,迭代器訪問(wèn)等等,我們的需求是這個(gè)容器表現(xiàn)出來(lái)的是棧的特性: 先進(jìn)后出,入棧出棧等等,此時(shí),沒有必要重新動(dòng)手寫一個(gè)新的數(shù)據(jù)結(jié)構(gòu),而是把原來(lái)的容器重新封裝一下,改變它的接口,就可以把它當(dāng)做棧使用;
  2. ? 容器適配器就是由基本的容器適配(改造)所形成的容器,比如stack,可以將stack理解成只是對(duì)vector/deque/list的訪問(wèn)受某種規(guī)則約束(只能從尾部訪問(wèn)),所以沒有必要將stack做成一個(gè)基本容器,使用其它的基本容器進(jìn)行封裝改造即可,所以stack在STL中只是一個(gè)“容器適配器”,而不是一個(gè)基礎(chǔ)容器;
template<class T, class Container = deque<T>>
class stack
{
public:
    //構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),析構(gòu)函數(shù),賦值運(yùn)算符重載均不需要實(shí)現(xiàn)
    //對(duì)于自定義類型的成員變量_con,編譯器自動(dòng)調(diào)用類的默認(rèn)成員函數(shù)
     
	//入棧
	void push(const T& x)
	{
		_con.push_back(x);
	}
	//出棧
	void pop()
	{
		_con.pop_back();
	}
	//獲取棧頂元素
	const T& top()
	{
		return _con.back();
	}
	//獲取棧中元素個(gè)數(shù)
	size_t size()
	{
		return _con.size();
	}
	//檢測(cè)棧是否為空
	bool empty()
	{
		return _con.empty();
	}
private:
	Container _con;//成員變量為容器(vector/list/deque)
};

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

queue的模擬實(shí)現(xiàn)

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

template<class T, class Container = deque<T>>
class queue
{
public:
	//隊(duì)尾入隊(duì)列
	void push(const T& x)
	{
		_con.push_back(x);
	}
	//隊(duì)頭出隊(duì)列
	void pop()
	{
		_con.pop_front();
	}
	//隊(duì)頭元素可被修改
	T& front()
	{
		return _con.front();
	}
	//隊(duì)頭元素不可被修改
	const T& front()const
	{
		return _con.front();
	}
	//隊(duì)尾元素可被修改
	T& back()
	{
		return _con.back();
	}
	//隊(duì)尾元素不可被修改
	const T& back()const
	{
		return _con.back();
	}
	size_t size()const
	{
		return _con.size();
	}
	bool empty()
	{
		return _con.empty();
	}
private:
	Container _con;
};

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)

總結(jié):

stack是一種后進(jìn)先出的特殊線性數(shù)據(jù)結(jié)構(gòu),因此只要具有push_back()和pop_back()操作的線性結(jié)構(gòu),都可以作為stack的底層容器,比如vector和list都可以;

queue先進(jìn)先出的特殊線性數(shù)據(jù)結(jié)構(gòu),只要具有push_back和pop_front操作的線性結(jié)構(gòu),都可以作為queue的底層容器,比如list;

歡迎大家批評(píng)指正,博主會(huì)持續(xù)輸出優(yōu)質(zhì)內(nèi)容,謝謝大家觀看,碼字不易,希望大家給個(gè)一鍵三連支持~ 你的支持是我創(chuàng)作的不竭動(dòng)力~

[ C++ ] STL---stack與queue,c++,開發(fā)語(yǔ)言,數(shù)據(jù)結(jié)構(gòu)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-844104.html

到了這里,關(guān)于[ C++ ] STL---stack與queue的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++ STL stack & queue

    C++ STL stack & queue

    目錄 一.stack 介紹 ?二.stack 使用 三.stack 模擬實(shí)現(xiàn) 普通版本: 適配器版本: 四.queue的介紹 五. queue使用 六.queue模擬實(shí)現(xiàn) 七.deque介紹 1.容器適配器 2.deque的簡(jiǎn)單介紹 3.deque的缺陷 4.為什么選擇deque作為stack和queue的底層默認(rèn)容器 stack------reference 1. stack是一種容器適配器,專門用在

    2024年02月12日
    瀏覽(23)
  • C++ STL--->stack和queue

    C++ STL--->stack和queue

    stack文檔 stack是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行 元素的插入與提取操作。 stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器即是對(duì)特定類封裝作為其底層的容器,并提供一組特定 的成員函數(shù)來(lái)訪問(wèn)其元素,將特定類作為

    2024年01月16日
    瀏覽(52)
  • [ C++ ] STL---stack與queue

    [ C++ ] STL---stack與queue

    目錄 stack簡(jiǎn)介 stack的常用接口 queue簡(jiǎn)介 queue的常用接口 stack的模擬實(shí)現(xiàn) queue的模擬實(shí)現(xiàn) 1. stack是具有后進(jìn)先出操作的一種容器適配器 ,其只能從容器的一端進(jìn)行元素的插入與刪除操作 ; 2. stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器即是對(duì)特定類封裝作為其底層的容器,并

    2024年03月28日
    瀏覽(20)
  • 【C++】學(xué)習(xí)STL中的stack和queue

    ? ? ? ? 今天這篇博客的內(nèi)容主要關(guān)于STL中的stack、queue和priority_queue三種容器。 ? ? ? ? stack和queue的使用方式非常簡(jiǎn)單,我們只要根據(jù)之前學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的經(jīng)驗(yàn)和文檔介紹就可以輕松上手。于是我們直接開始對(duì)它們的模擬實(shí)現(xiàn)。 ? ? ? ? stack和queue我們?cè)跀?shù)據(jù)結(jié)構(gòu)階段就曾經(jīng)

    2024年02月10日
    瀏覽(21)
  • 【c++】STL之stack和queue詳解

    【c++】STL之stack和queue詳解

    作者簡(jiǎn)介:?舊言~,目前大二,現(xiàn)在學(xué)習(xí)Java,c,c++,Python等 座右銘:松樹千年終是朽,槿花一日自為榮。 目標(biāo):掌握stack和queue庫(kù),了解deque庫(kù) 毒雞湯:小時(shí)候,哭是我們解決問(wèn)題的絕招,長(zhǎng)大后,笑是我們面對(duì)現(xiàn)實(shí)的武器。 望小伙伴們點(diǎn)贊??收藏?加關(guān)注喲????? 今天

    2024年02月19日
    瀏覽(15)
  • C++基礎(chǔ)(13)——STL(stack、queue、list)

    C++基礎(chǔ)(13)——STL(stack、queue、list)

    本文主要介紹C++中STL中的stack、queue和list容器 棧中只有頂端元素才可以被外界調(diào)用,因此棧不允許有遍歷的行為,其中string、vector、deque都可以遍歷 隊(duì)列中隊(duì)頭出數(shù)據(jù),隊(duì)尾進(jìn)數(shù)據(jù),且和棧一樣不允許有遍歷操作 queue容器裝入自定義數(shù)據(jù)類型數(shù)據(jù) 鏈表由一系列的結(jié)點(diǎn)組成,結(jié)

    2024年02月10日
    瀏覽(23)
  • 【C++】STL——stack和queue使用及模擬實(shí)現(xiàn)

    【C++】STL——stack和queue使用及模擬實(shí)現(xiàn)

    ?? 作者簡(jiǎn)介:一名在后端領(lǐng)域?qū)W習(xí),并渴望能夠?qū)W有所成的追夢(mèng)人。 ?? 個(gè)人主頁(yè):不 良 ?? 系列專欄:??C++ ???Linux ?? 學(xué)習(xí)格言:博觀而約取,厚積而薄發(fā) ?? 歡迎進(jìn)來(lái)的小伙伴,如果小伙伴們?cè)趯W(xué)習(xí)的過(guò)程中,發(fā)現(xiàn)有需要糾正的地方,煩請(qǐng)指正,希望能夠與諸君一同

    2024年02月13日
    瀏覽(25)
  • 【C++ STL】 趣學(xué)stack&queue&priority_queue【對(duì)話情景版】
  • [C++] STL_stack && queue接口的模擬實(shí)現(xiàn)

    [C++] STL_stack && queue接口的模擬實(shí)現(xiàn)

    stack的文檔介紹 1. stack是一種容器適配器,專門用在具有 后進(jìn)先出 操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行元素的插入與提取操作。 2. stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器即是對(duì)特定類封裝作為其底層的容器,并提供一組特定的成員函數(shù)來(lái)訪問(wèn)其元素,將

    2024年02月05日
    瀏覽(25)
  • STL容器適配器 -- stack和queue(使用+實(shí)現(xiàn))(C++)

    STL容器適配器 -- stack和queue(使用+實(shí)現(xiàn))(C++)

    棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu)+畫圖分析如果對(duì)棧和隊(duì)列的結(jié)構(gòu)不了解的,可以先看該鏈接的內(nèi)容 使用stack時(shí)需要頭文件 #includestack stack是一種容器適配器,用于具有 后進(jìn)先出 (LIFO)的環(huán)境中。只能從容器的一端(棧頂),執(zhí)行刪除、插入和提取操作。 stack是作為容器適配器實(shí)現(xiàn)的,容器

    2024年02月14日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包