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

【C++】手撕 棧 & 隊(duì)列(適配器)

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

目錄

一,stack

1,stack的介紹

2,stack 框架

3,push(const T& x)

4,pop()

5,top()

6,size()

7,empty()

8,stack 測試

9,源代碼

二,queue

1,queue的介紹

2,queue 框架

3,push(const T& x)

4,pop()

5,front()

6,back()

7,size()

8,empty()

9,queue 測試

10,源代碼

三,總結(jié)


【C++】手撕 棧 & 隊(duì)列(適配器),C++,c++,開發(fā)語言,算法,運(yùn)維,數(shù)據(jù)結(jié)構(gòu)

一,stack

1,stack的介紹

1,stack 是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行元素的插入與提取操作。

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

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

empty:判空操作

back:獲取尾部元素操作

push_back:尾部插入元素操作

pop_back:尾部刪除元素操作

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

【C++】手撕 棧 & 隊(duì)列(適配器),C++,c++,開發(fā)語言,算法,運(yùn)維,數(shù)據(jù)結(jié)構(gòu)

2,stack 框架

這里我們要用【適配器】

	template<class T,class Container=vector<T>>
	class stack
	{
	public:
	
	private:
		Container _con;
	};

適配器 Container 可以轉(zhuǎn)換成特定的容器;

3,push(const T& x)

尾插

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

4,pop()

尾刪

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

5,top()

取棧頂元素

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

6,size()

堆棧有效數(shù)據(jù)個數(shù)

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

7,empty()

判空

		bool empty()
		{
			return _con.empty();
		}

8,stack 測試

void test1()
{
	wxd::stack<int> sk1;

	sk1.push(1);
	sk1.push(2);
	sk1.push(3);
	sk1.push(4);

	sk1.pop();
	cout << sk1.top() << " " << sk1.size() << " " << sk1.empty() << " " << endl;
}

【C++】手撕 棧 & 隊(duì)列(適配器),C++,c++,開發(fā)語言,算法,運(yùn)維,數(shù)據(jù)結(jié)構(gòu)

9,源代碼

	template<class T,class Container=vector<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;
	};

二,queue

1,queue的介紹

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

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

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

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

size:返回隊(duì)列中有效元素的個數(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++】手撕 棧 & 隊(duì)列(適配器),C++,c++,開發(fā)語言,算法,運(yùn)維,數(shù)據(jù)結(jié)構(gòu)

2,queue 框架

	template<class T, class Container = list<T>>
	class queue
	{
	public:
		
	private:
		Container _con;
	};

適配器 Container 可以轉(zhuǎn)換成特定的容器;

3,push(const T& x)

尾插

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

4,pop()

頭刪

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

5,front()

返回隊(duì)列頭部的值

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

6,back()

返回隊(duì)列尾部的值

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

7,size()

返回有效數(shù)據(jù)個數(shù)

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

8,empty()

判空

		bool empty()
		{
			return _con.empty();
		}

9,queue 測試

void test_queue()
{
	wxd::queue<int> q;
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);

	while (!q.empty())
	{
		cout << q.front() << " ";
		q.pop();
	}
	cout << endl;

}

【C++】手撕 棧 & 隊(duì)列(適配器),C++,c++,開發(fā)語言,算法,運(yùn)維,數(shù)據(jù)結(jié)構(gòu)

10,源代碼

	template<class T, class Container = list<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;
	};

三,總結(jié)

我們就先搞一個大概的,其中還有很多分支,比如我們寫的是擦除某個數(shù)據(jù),其實(shí)也可以擦除某個范圍,這些就靠大家去摸索,查閱文檔了;

stack 和 queue 類的實(shí)現(xiàn)就到這里了;

加油!

【C++】手撕 棧 & 隊(duì)列(適配器),C++,c++,開發(fā)語言,算法,運(yùn)維,數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-852148.html

到了這里,關(guān)于【C++】手撕 棧 & 隊(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)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 【c++】:“無敵的適配器來咯“棧和隊(duì)列模擬實(shí)現(xiàn)以及優(yōu)先級隊(duì)列的模擬實(shí)現(xiàn)。

    【c++】:“無敵的適配器來咯“棧和隊(duì)列模擬實(shí)現(xiàn)以及優(yōu)先級隊(duì)列的模擬實(shí)現(xiàn)。

    ? ? 文章目錄 前言 一.棧和隊(duì)列的模擬實(shí)現(xiàn) 二.優(yōu)先級隊(duì)列 總結(jié) ? 棧的介紹和使用: 1. stack是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行元素的插入與提取操作。 2. stack是作為容器適配器被實(shí)現(xiàn)的,容器適配器即是對特定類封

    2024年02月01日
    瀏覽(21)
  • 【C++航海王:追尋羅杰的編程之路】priority_queue(優(yōu)先隊(duì)列) | 容器適配器你知道哪些?

    【C++航海王:追尋羅杰的編程之路】priority_queue(優(yōu)先隊(duì)列) | 容器適配器你知道哪些?

    目錄 1 -?priority_queue的介紹和使用 1.1 -?priority_queue的介紹 1.2 -?priority_queue的使用 1.3 -?priority_queue的模擬實(shí)現(xiàn) 2 - 容器適配器 2.1 - 什么是適配器 2.2 - STL標(biāo)準(zhǔn)庫中stack和queue的底層結(jié)構(gòu) 2.3 - deque的介紹 2.3.1 - deque的原理介紹 2.3.2 - deque的缺陷 2.4 - 為什么選擇deque作為stack和queue的底

    2024年04月10日
    瀏覽(46)
  • 【C++】STL——容器適配器priority_queue(優(yōu)先級隊(duì)列)詳解 及 仿函數(shù)的介紹和使用

    【C++】STL——容器適配器priority_queue(優(yōu)先級隊(duì)列)詳解 及 仿函數(shù)的介紹和使用

    這篇文章我們接著上一篇的內(nèi)容,再來學(xué)一個STL里的容器適配器—— priority_queue (優(yōu)先級隊(duì)列) 1.1 priority_queue的介紹 我們上一篇文章學(xué)了 queue (隊(duì)列),那優(yōu)先級隊(duì)列也是在 queue 里面的: 和 queue 一樣, priority_queue 也是一個容器適配器,那他和 queue 有什么區(qū)別呢?我們一

    2024年02月07日
    瀏覽(25)
  • 【C++】STL 算法 ⑩ ( 函數(shù)適配器 | 函數(shù)適配器概念 | 函數(shù)適配器分類 | 函數(shù)適配器輔助函數(shù) | std::bind2nd 函數(shù)原型及示例 | std::bind 函數(shù)原型及示例 )

    【C++】STL 算法 ⑩ ( 函數(shù)適配器 | 函數(shù)適配器概念 | 函數(shù)適配器分類 | 函數(shù)適配器輔助函數(shù) | std::bind2nd 函數(shù)原型及示例 | std::bind 函數(shù)原型及示例 )

    在 STL 中 預(yù)定義了很多 函數(shù)對象 , 如果要 對 函數(shù)對象 的 參數(shù) / 返回值 進(jìn)行 計算 或 設(shè)置 , 可以 使用 \\\" 函數(shù)適配器 \\\" 實(shí)現(xiàn)上述需求 ; \\\" 函數(shù)適配器 \\\" 可以 將 已存在的 函數(shù)對象 轉(zhuǎn)化為 另一種符合要求的 函數(shù)對象 ; \\\" 函數(shù)適配器 \\\" 定義在 functional 頭文件 中 ; \\\" 函數(shù)適配器

    2024年02月02日
    瀏覽(59)
  • [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)
  • 從C語言到C++_38(C++的IO流+空間適配器)STL六大組件聯(lián)系

    從C語言到C++_38(C++的IO流+空間適配器)STL六大組件聯(lián)系

    目錄 1. C語言的輸入和輸出和流 2. C++的IO流 2.1 C++標(biāo)準(zhǔn)IO流 2.2 C++文件IO流 2.3 stringstream(字符流) 3. 空間配置器(了解) 3.1 一級空間適配器 3.2 二級空間配置器 3.3 二級空間適配器的空間申請 3.4 二級空間配置器的空間回收 3.5?對象構(gòu)造與釋放和與容器結(jié)合 4. STL六大組件聯(lián)系

    2024年02月09日
    瀏覽(29)
  • STL:雙端隊(duì)列&容器適配器&仿函數(shù)&優(yōu)先級隊(duì)列

    STL:雙端隊(duì)列&容器適配器&仿函數(shù)&優(yōu)先級隊(duì)列

    雙端隊(duì)列可以在頭部和尾部進(jìn)行插入刪除操作 與vector相比,頭插效率高,不需要搬移元素 與list相比,空間利用率高 deque邏輯上空間是連續(xù)的,物理上并不是,是由一段段小空間拼接而成的 雙端隊(duì)列的迭代器比較復(fù)雜 cur:指向空間中被遍歷的那個元素 first:指向空間開始

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

    【簡化程序設(shè)計】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)
  • 適配器模式(C++)

    適配器模式(C++)

    將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 在軟件系統(tǒng)中,由于應(yīng)用環(huán)境的變化,常常需要將“一些現(xiàn)存的對象 ”放在新的環(huán)境中應(yīng)用,但是新環(huán)境要求的接口是這些現(xiàn)存對象所不滿足的。 如何

    2024年02月14日
    瀏覽(19)
  • C++適配器模式

    1 簡介: 適配器模式是一種結(jié)構(gòu)型設(shè)計模式,用于將一個類的接口轉(zhuǎn)換為客戶端所期望的另一個接口。適配器模式允許不兼容的類能夠協(xié)同工作,通過適配器類來實(shí)現(xiàn)接口的轉(zhuǎn)換和適配。 2 實(shí)現(xiàn)步驟: 以下是使用C++實(shí)現(xiàn)適配器模式的步驟: a. 定義目標(biāo)接口:首先,確定客戶

    2024年02月12日
    瀏覽(15)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包