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

【C++初階】容器適配器模擬實(shí)現(xiàn)棧和隊(duì)列(附源碼)

這篇具有很好參考價值的文章主要介紹了【C++初階】容器適配器模擬實(shí)現(xiàn)棧和隊(duì)列(附源碼)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.容器適配器

其實(shí)在使用模板時,我們不僅可以使用類模板,還可以使用容器模板,這就是一個容器適配器,我們可任意給模板實(shí)例化不同的容器,然后就可以使用容器里的接口。

template<class T,class Containers>

我們知道,??梢杂脭?shù)組實(shí)現(xiàn)也可以用鏈表實(shí)現(xiàn),以前在C語言那里,如果我們想要兩個底層不同的棧,要么寫兩個棧,要么用typedef,但這做不到自由控制;在C++中,我們可以容器適配器解決這個問題,數(shù)組鏈表秒切換。

?注意使用的接口必須是你實(shí)例化的容器所擁有的,否則會報(bào)錯。

例:

? vector容器沒有頭插(push_front)和頭刪(pop_front)接口

? list卻有這兩個接口,所以在使用時要特別注意。


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

?

庫里棧的模板是這樣的,這個deque是一個雙端隊(duì)列,它同時擁有vector和list的接口。?

?

【C++初階】容器適配器模擬實(shí)現(xiàn)棧和隊(duì)列(附源碼),C++初階,c++,開發(fā)語言,棧,隊(duì)列?

上圖是棧的接口,都很簡單,棧符合先進(jìn)后出,下面就讓我們用容器適配器模擬實(shí)現(xiàn)棧吧。

?

源碼

template<class T,class Containers=deque<T>>  //容器適配器
	class stack   //棧
	{
	public:
		void push(const T& val)   //入棧,即尾插
		{
			_con.push_back(val);
		}

		void pop()   //出棧,即尾刪
		{
			_con.pop_back();
		}

		const T& top() const  //取棧頂元素
		{
			return _con.back();
		}

		bool empty()
		{
			return _con.size() == 0;
		}

		size_t size() const
		{
			return _con.size();
		}
	private:
		Containers _con;
	};

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

【C++初階】容器適配器模擬實(shí)現(xiàn)棧和隊(duì)列(附源碼),C++初階,c++,開發(fā)語言,棧,隊(duì)列

【C++初階】容器適配器模擬實(shí)現(xiàn)棧和隊(duì)列(附源碼),C++初階,c++,開發(fā)語言,棧,隊(duì)列?

隊(duì)列和棧差不多,但隊(duì)列是先進(jìn)先出原則。?

源碼

template<class T,class Containers=deque<T>>
	class queue   //隊(duì)列
	{
	public:
		void push(const T&val)   //入隊(duì)列,即尾插
		{
			_con.push_back(val);
		}

		void pop()   //出隊(duì)列,即頭刪
		{
			_con.pop_front();
		}

		T& front()   //取隊(duì)列的第一個元素
		{
			return _con.front();
		}

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

		bool empty()
		{
			return _con.size() == 0;
		}

		size_t size() const
		{
			return _con.size();
		}
	private:
		Containers _con;
	};

????本篇文章到此就結(jié)束了,?若有錯誤或是建議的話,歡迎小伙伴們指出;?????

????希望小伙伴們能支持支持博主啊,你們的支持對我很重要哦;????

????謝謝你的閱讀。????文章來源地址http://www.zghlxwxcb.cn/news/detail-602310.html

到了這里,關(guān)于【C++初階】容器適配器模擬實(shí)現(xiàn)棧和隊(duì)列(附源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【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é)),該種模式是將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。 例如我們常見的充電器就是一種適配器,它將我們常用的220V交流電壓轉(zhuǎn)化為4,5V (或者其他更高的電

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

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

    2024年02月02日
    瀏覽(26)
  • 【C++】STL之適配器---用deque實(shí)現(xiàn)棧和隊(duì)列

    【C++】STL之適配器---用deque實(shí)現(xiàn)棧和隊(duì)列

    目錄 前言 一、deque ?1、deque 的原理介紹 ?2、deque 的底層結(jié)構(gòu) ?3、deque 的迭代器 ?4、deque 的優(yōu)缺點(diǎn) ? 4.1、優(yōu)點(diǎn) ? 4.2、缺點(diǎn) 二、stack 的介紹和使用 ?1、stack 的介紹 ?2、stack 的使用 ?3、stack 的模擬實(shí)現(xiàn) 三、queue 的介紹和使用 ?1、queue 的介紹? ?2、queue 的使用 ?3、queue 的模

    2024年02月07日
    瀏覽(23)
  • [C++] STL_priority_queue(優(yōu)先級隊(duì)列) 的使用及底層的模擬實(shí)現(xiàn),容器適配器,deque的原理介紹

    [C++] STL_priority_queue(優(yōu)先級隊(duì)列) 的使用及底層的模擬實(shí)現(xiàn),容器適配器,deque的原理介紹

    priority_queue文檔介紹 翻譯: 1. 優(yōu)先隊(duì)列是一種 容器適配器 ,根據(jù)嚴(yán)格的弱排序標(biāo)準(zhǔn), 它的第一個元素總是它所包含的元素中最大的。 2. 此上下文類似于 堆 , 在堆中可以隨時插入元素,并且只能檢索最大堆元素(優(yōu)先隊(duì)列中位于頂部的元素)。 3. 優(yōu)先隊(duì)列被實(shí)現(xiàn)為容器適配

    2024年02月04日
    瀏覽(19)
  • 【簡化程序設(shè)計(jì)】C++STL“容器適配器“之棧和隊(duì)列

    【簡化程序設(shè)計(jì)】C++STL“容器適配器“之棧和隊(duì)列

    ??博客主頁:小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:C++初階 ??代碼倉庫:小智的代碼倉庫 【本節(jié)目標(biāo)】: stack的介紹和使用 stack的模擬實(shí)現(xiàn) queue的介紹和使用 queue的模擬實(shí)現(xiàn) priority_queue的介紹和使用 priority_queue的模擬實(shí)現(xiàn) 容器適配器 deuqe的介紹

    2024年02月15日
    瀏覽(23)
  • 【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)的,容器適配器是使用特定容器類的封裝對象作為其基礎(chǔ)容器的類,提供一

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

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

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

    2024年02月14日
    瀏覽(30)
  • 【容器適配器的認(rèn)識與模擬】

    【容器適配器的認(rèn)識與模擬】

    打怪升級:第78天 朋友們大家好,今天我們來探究一下stl中的 適配器 ,作為stl六大組件之一,適配器的重要性顯而易見。 適配,就是可以和其他工具一起配合著使用,并且只要滿足適配條件就都可以使用。 我們生活中又有哪些物品可以稱為適配器? 例如:排插、手機(jī)充電

    2024年02月08日
    瀏覽(13)
  • 【C++】STL——反向迭代器的模擬實(shí)現(xiàn):迭代器適配器

    【C++】STL——反向迭代器的模擬實(shí)現(xiàn):迭代器適配器

    反向迭代器的使用相信大家都已經(jīng)比較熟悉了,那我們這篇文章具體講什么呢? ??,這篇文章我們重點(diǎn)來講一下 反向迭代器的模擬實(shí)現(xiàn) 。 那為什么我們之前不和正向迭代器放在一塊講呢?為什么要等到我們講完了容器適配器再來講反向迭代器的模擬實(shí)現(xiàn)呢? 那這個問題我

    2024年02月08日
    瀏覽(21)
  • C++初階—完善適配器(反向迭代器)

    C++初階—完善適配器(反向迭代器)

    目錄 0. 前言 1、反向迭代器定義 2、反向迭代器需要實(shí)現(xiàn)的相關(guān)函數(shù) 3、反向迭代器分析 4、針對vector物理空間結(jié)構(gòu)分析 5、針對list物理空間結(jié)構(gòu)分析 6、反向迭代器適配器的實(shí)現(xiàn)及測試 7、有關(guān)迭代器的功能分類 本篇文章主要根據(jù)前面所實(shí)現(xiàn)的STL中支持迭代器的容器進(jìn)行完善

    2024年02月09日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包