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

模擬實現(xiàn)stack類與queue類

這篇具有很好參考價值的文章主要介紹了模擬實現(xiàn)stack類與queue類。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

本章我們將學(xué)習(xí)stackqueue的基本使用以及模擬實現(xiàn)。與前面已經(jīng)學(xué)過的容器不同,stackqueue屬于STL六大組件之一的容器適配器范疇。

一.stack簡介

STL中,stack是一個模板類,用于實現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)。棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),可以在棧頂進(jìn)行插入和刪除操作。

stack是一種容器適配器,容器適配器不是容器類型本身,而是對現(xiàn)有的容器類型進(jìn)行了一定程度的封裝和改造,從而形成了一種新的容器類型。

stack類封裝了一個底層容器,可以使用多種不同的容器作為其底層實現(xiàn),比如dequevector等。

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

  • empty:判空操作
  • back:獲取尾部元素操作
  • push_back:尾部插入元素操作
  • pop_back:尾部刪除元素操作

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

至于deque是什么我們先不深究,我們就先把它看作vector一樣,后面會講到。

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

我們已經(jīng)知道棧是一個容器適配器,底層封裝了其它容器,所以棧的實現(xiàn)非常簡單,在實現(xiàn)各個函數(shù)接口時,我們直接復(fù)用封裝的容器的相關(guān)接口即可。

不同于vectorlist的模擬實現(xiàn),stack需要兩個模板參數(shù):

參數(shù)類型:class T
容器類型:class Container

我們可以在自己的命名空間中定義stack類,如下:

namespace dianxia
{
	template<class T, class Container = vector<T>>
	class stack
	{
	public:

		void push(const T& data)
		{
			//...
		}

		void pop()
		{
			//...
		}

		const T& top()
		{
			//...
		}

		size_t size()
		{
			//...
		}

		bool empty()
		{
			//...
		}

	private:
		Container _con;
	};
}

接下來就是實現(xiàn)各個接口了。作為容器適配器,stack的各接口實現(xiàn)極其簡單,用一分鐘實現(xiàn)一個棧來描述也不是太夸張,一起來看看吧。

namespace dianxia
{
	template<class T, class Container = vector<T>>
	class stack
	{

	public:

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

		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;
	};

}

因為容器適配器是封裝了一層容器的,所以可以直接調(diào)用底層容器的接口供自己使用?,F(xiàn)在再回頭看文章開頭對于容器適配器的描述,應(yīng)該能深刻理解了。

三.queue簡介

queuestack非常相似。在STL中,隊列(queue)是一種基本的數(shù)據(jù)結(jié)構(gòu),它是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。隊列可以看作是一條通往某個目的地的等待隊列,其中最先進(jìn)入的元素首先被處理,而最后進(jìn)入的元素則最后被處理。

stack相同,queue同樣也是一個容器適配器queuestack對比起來學(xué)習(xí)會更加輕松。

四.queue模擬實現(xiàn)

queuestack的實現(xiàn)方式大同小異,此處不做贅述。

namespace dianxia
{
	template<class T, class Container = list<T>>
	class queue
	{
		void push()
		{
			_con.push_back();
		}

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

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

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

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

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

本章節(jié)的內(nèi)容就到這里了。下一章我們將學(xué)習(xí)雙端隊列——deque和優(yōu)先級隊列——priority_queue,認(rèn)識了雙端隊列,我們就能明白為什么庫中的stackqueue要使用deque來做底層容器了。


本文到此結(jié)束,碼文不易,還請多多支持哦!?。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-603363.html

到了這里,關(guān)于模擬實現(xiàn)stack類與queue類的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【C++】stack、queue模擬實現(xiàn)+仿函數(shù)

    【C++】stack、queue模擬實現(xiàn)+仿函數(shù)

    鐵汁們,今天給大家分享一篇stack、queue模擬實現(xiàn)+仿函數(shù),來吧,開造?? stack是容器適配器,專門用于進(jìn)行”先進(jìn)后出”操作的環(huán)境中,只能在容器的一端進(jìn)行數(shù)據(jù)的插入和刪除操作,元素在特定容器的尾部(即棧頂)被壓入和彈出。 容器適配器是將特定的類進(jìn)行封裝,將其

    2024年03月19日
    瀏覽(23)
  • 【STL】stack、queue基本使用和模擬實現(xiàn)

    【STL】stack、queue基本使用和模擬實現(xiàn)

    目錄 前言 stack 接口介紹 模擬實現(xiàn) queue 接口介紹 模擬實現(xiàn) 沒有迭代器? deque介紹 stack 和 queue 本質(zhì)上是一種容器配接器,就像我們平時充電時使用的電源適配器,能夠?qū)㈦妷恨D(zhuǎn)換成設(shè)備能夠接受的程度。 其通過封裝特定容器作為其底層容器的類,通過一組特定的成員函數(shù)來

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

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

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

    2024年02月13日
    瀏覽(25)
  • [C++] STL_stack && queue接口的模擬實現(xiàn)

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

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

    2024年02月05日
    瀏覽(25)
  • C++:stack、queue、priority_queue增刪查改模擬實現(xiàn)、deque底層原理

    C++:stack、queue、priority_queue增刪查改模擬實現(xiàn)、deque底層原理

    我們先來看看 stack的相關(guān)接口有哪些: 從棧的接口,我們可以知道棧的接口是一種特殊的vector,所以我們完全可以使用vector來模擬實現(xiàn)stack。 因此我們可以將底層容器定義成模板,然后將容器類變量作為成員變量進(jìn)行封裝。在實現(xiàn)satck的各種接口時,通過成員變量來調(diào)用底層

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

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

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

    2024年02月06日
    瀏覽(24)
  • 【C++】——棧和隊列(stack、queue)及優(yōu)先隊列(priority_queue)的介紹和模擬實現(xiàn)

    【C++】——棧和隊列(stack、queue)及優(yōu)先隊列(priority_queue)的介紹和模擬實現(xiàn)

    今天我們來學(xué)習(xí)C++stl六大組件的其中一種,容器適配器,stack、queue及priority_queue都是容器適配器。我們循序漸進(jìn),接下來讓我們先認(rèn)識一下什么是容器適配器。 適配器是一種設(shè)計模式(設(shè)計模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗的總結(jié)),該

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

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

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

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

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

    2024年02月02日
    瀏覽(26)
  • C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實現(xiàn)

    C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實現(xiàn)

    介紹完了list類的相關(guān)內(nèi)容后:C++初階:適合新手的手撕list(模擬實現(xiàn)list) 接下來進(jìn)入新的篇章,stack和queue的介紹以及模擬: stack是一種容器適配器,專門用在具有后進(jìn)先出操作的上下文環(huán)境中,其刪除只能從容器的一端進(jìn)行元素的插入與提取操作。 stack是作為容器適配器

    2024年02月19日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包