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

STL之stack+queue的使用及其實(shí)現(xiàn)

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

所屬專欄:C“嘎嘎" 系統(tǒng)學(xué)習(xí)??
?? >博主首頁(yè):初陽(yáng)785??
?? >代碼托管:chuyang785??
?? >感謝大家的支持,您的點(diǎn)贊和關(guān)注是對(duì)我最大的支持?。。??
?? >博主也會(huì)更加的努力,創(chuàng)作出更優(yōu)質(zhì)的博文!!??

1. stack,queue的介紹與使用

1.1stack的介紹

stack的文檔介紹

  1. stack是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行
    元素的插入與提取操作。
  2. stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器即是對(duì)特定類封裝作為其底層的容器,并提供一組特定
    的成員函數(shù)來訪問其元素,將特定類作為其底層的,元素特定容器的尾部(即棧頂)被壓入和彈出。
  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。

1.2stack的使用

函數(shù)說明 接口說明
stack() 構(gòu)造空的棧
empty() 檢測(cè)stack是否為空
size() 返回stack中元素的個(gè)數(shù)
top() 返回棧頂元素的引用
push() 將元素val壓入stack中
pop() 將stack中尾部的元素彈出

1.3queue的介紹

queue的文檔介紹

  1. 隊(duì)列是一種容器適配器,專門用于在FIFO上下文(先進(jìn)先出)中操作,其中從容器一端插入元素,另一端
    提取元素。
  2. 隊(duì)列作為容器適配器實(shí)現(xiàn),容器適配器即將特定容器類封裝作為其底層容器類,queue提供一組特定的
    成員函數(shù)來訪問其元素。元素從隊(duì)尾入隊(duì)列,從隊(duì)頭出隊(duì)列。
  3. 底層容器可以是標(biāo)準(zhǔn)容器類模板之一,也可以是其他專門設(shè)計(jì)的容器類。該底層容器應(yīng)至少支持以下操
    作:
    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。

1.4queue的使用

函數(shù)聲明 接口說明
queue() 構(gòu)造空的隊(duì)列
empty() 檢測(cè)隊(duì)列是否為空,是返回true,否則返回false
size() 返回隊(duì)列中有效元素的個(gè)數(shù)
front() 返回隊(duì)頭元素的引用
back() 返回隊(duì)尾元素的引用
push() 在隊(duì)尾將元素val入隊(duì)列
pop() 將隊(duì)頭元素出隊(duì)列

2.stack,queue的模擬實(shí)現(xiàn)

適配器:
適配器是一種設(shè)計(jì)模式(設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總
結(jié)),該種模式是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口
STL之stack+queue的使用及其實(shí)現(xiàn),# C“嘎嘎” 系統(tǒng)學(xué)習(xí),c++,開發(fā)語(yǔ)言
用簡(jiǎn)單話來概括適配器就是——用現(xiàn)有的東西適配出一個(gè)新的東西。文章來源地址http://www.zghlxwxcb.cn/news/detail-834138.html

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

  • 補(bǔ)充知識(shí)點(diǎn):
    我們知道函數(shù)傳參的時(shí)候是可以有缺省參數(shù)并給定默認(rèn)參數(shù)值的,所以我們的類模板參數(shù)同樣是可以的。
  • 既然是利用現(xiàn)有的東西適配出一個(gè)新的東西,用來適配的STL就需要可以滿足被適配出來的所屬功能。這里stack棧要實(shí)現(xiàn)的是fist in last out先進(jìn)后出的功能,也就是push_back和pop_back這兩個(gè)主要的功能,所以只要可以滿足這兩個(gè)主要的功能,基本上可以用來適配出stack容器了。
  • 既然是適配,我們的類模板參數(shù)就需要傳遞一個(gè)STL容器的類型過來,用來適配,所以就需要一個(gè)Container參數(shù)類型用來接收用來適配的容器的類型,并在內(nèi)用這個(gè)類型創(chuàng)建對(duì)象,并用這個(gè)對(duì)象來實(shí)現(xiàn)所需要的功能。
  • 這里用到的默認(rèn)適配器是deque雙端隊(duì)列,這個(gè)在后期的章節(jié)會(huì)進(jìn)行講解,這里就簡(jiǎn)單的理解一下,deque是兼容了vector和list的所用功能,可以理解是vector和list的結(jié)合體。
#pragma once
#include <deque>
namespace qfw
{
	template< class T, class Container = deque<T>>
	class stack
	{
	public:
		void push(const T& x)
		{
			_con.push_back(x);
		}

		void pop()
		{
			_con.pop_back();
		}

		T& top()
		{
			return _con.back();
		}

		const T& top() const
		{
			return _con.back();
		}

		size_t size() const
		{
			return _con.size();
		}

		bool empty() const
		{
			return _con.empty();
		}
	private:
		Container _con;
	};
}

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

#pragma once
#include <deque>

namespace qfw
{
	template <class T, class Container = deque<T>>
	class queue
	{
	public:

		void push(const T& x)
		{
			_con.push_back(x);
		}

		void pop()
		{
			_con.pop_front();
		}

		T& back()
		{
			return _con.back();
		}
		const T& back()const
		{
			return _con.back();
		}

		T& front()
		{
			return _con.front();
		}

		const T& front() const
		{
			return _con.front();
		}

		size_t size() const
		{
			return _con.size();
		}

		bool empty() const
		{
			return  _con.empty();
		}
	private:
		Container _con;
	};
}

3.總結(jié)

  1. 本章節(jié)的主要核心點(diǎn)是適配器的使用,有了適配器大大代碼的冗余性,大大提高了代碼的復(fù)用性,并且使得我們的代碼結(jié)構(gòu)變得多樣性。只要使用的適配器可以滿足我們所需要的功能就可以進(jìn)行適配。比如stack我們不僅可以用deque進(jìn)行適配,也可以用vector和list進(jìn)行適配,不同的適配器,使用不同的結(jié)構(gòu),但是都可以得到我們想要的結(jié)果,當(dāng)然這是在有類模板的前提下。
  2. 所以其實(shí)繞個(gè)彎過來核心還是模板的使用,模板的使用讓代碼程序變得更加的靈活多變,減少了很多程序員的代碼成本,但是編譯器底層還是會(huì)將模板展開并進(jìn)行一次類型匹配,也就是將原本我們的工作量交給了編譯器幫我們做了。

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

本文來自互聯(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容器適配器的模擬實(shí)現(xiàn)(使用deque容器)

    【C++】STL中stack,queue容器適配器的模擬實(shí)現(xiàn)(使用deque容器)

    ??博客主頁(yè): 主頁(yè) ??系列專欄: C++ ??感謝大家點(diǎn)贊??收藏?評(píng)論?? ??期待與大家一起進(jìn)步! 雖然stack和queue中也可以存放元素,但在STL中并沒有將其劃分在容器的行列,而是將其稱為容器適配器,這是因?yàn)閟tack和隊(duì)列只是對(duì)其他容器的接口進(jìn)行了包裝,STL中stack和

    2024年02月15日
    瀏覽(31)
  • 【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)
  • [STL]stack和queue使用介紹

    [STL]stack和queue使用介紹

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

    2024年02月15日
    瀏覽(20)
  • [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ù)來訪問其元素,將

    2024年02月05日
    瀏覽(25)
  • 【STL】容器適配器stack和queue常見用法及模擬實(shí)現(xiàn)

    【STL】容器適配器stack和queue常見用法及模擬實(shí)現(xiàn)

    1.stack介紹及使用 1.1 stack的介紹 stack文檔介紹 stack是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行元素的插入與提取操作。 stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器是使用特定容器類的封裝對(duì)象作為其基礎(chǔ)容器的類,提供一

    2024年02月06日
    瀏覽(24)
  • 【C++】STL中的容器適配器 stack queue 和 priority_queue 的模擬實(shí)現(xiàn)

    【C++】STL中的容器適配器 stack queue 和 priority_queue 的模擬實(shí)現(xiàn)

    適配器是一種設(shè)計(jì)模式 (設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)),該種模式是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。 例如我們常見的充電器就是一種適配器,它將我們常用的220V交流電壓轉(zhuǎn)化為4,5V (或者其他更高的電

    2023年04月26日
    瀏覽(24)
  • 容器適配器---deque和STL ---stack queue priority_queue的模擬實(shí)現(xiàn) C++

    目錄 一、容器適配器 deque原理 deque的缺陷 deque的優(yōu)勢(shì) 二、stack的模擬實(shí)現(xiàn) ?三、queue的模擬實(shí)現(xiàn) 四、優(yōu)先級(jí)隊(duì)列的模擬實(shí)現(xiàn) 適配器是一種設(shè)計(jì)模式(設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)),該種模式是將一個(gè)類的接口轉(zhuǎn)換成客戶

    2024年02月02日
    瀏覽(26)
  • C++入門之stl六大組件--stack和queue源碼深度剖析及模擬實(shí)現(xiàn)

    目錄 前言 一、stack的介紹和使用 1.stack的介紹 2.stack的使用 3.stack的模擬實(shí)現(xiàn) 二、queue的介紹和使用 1.queue的介紹 2.queue的使用 3.queue的模擬實(shí)現(xiàn) 三、priority_queue的介紹和使用 1.priority_queue的介紹 2.priority_queue的使用 3.priority_queue的模擬實(shí)現(xiàn) 3.1解決一個(gè)topK問題 四、容器適配器 1

    2024年02月14日
    瀏覽(22)
  • 【C++】STL之容器適配器——使用deque適配stack和queue

    【C++】STL之容器適配器——使用deque適配stack和queue

    個(gè)人主頁(yè):??在肯德基吃麻辣燙 分享一句喜歡的話:熱烈的火焰,冰封在最沉默的火山深處。 本文章主要介紹容器適配器的功能,以及一個(gè)適配的場(chǎng)景。 容器適配器,按字面意思理解的話,就是用來對(duì)一個(gè)容器進(jìn)行匹配的。在C++STL中,容器有:vector,list,deque,map,set等。

    2024年02月16日
    瀏覽(25)
  • STL——stack和queue

    STL——stack和queue

    stl中提供了棧和隊(duì)列配接器供我們使用,以后就可以直接使用了。不需要我們自己造輪子。 使用細(xì)節(jié)參考文檔就可以,與之學(xué)過的容器并無二致。棧和隊(duì)列的特性我們?cè)賹W(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時(shí)已經(jīng)了解了。這里就不在贅述了。 stack - C++ Reference (cplusplus.com) queue - C++ Reference (cplusplus

    2024年02月12日
    瀏覽(17)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包