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

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

這篇具有很好參考價值的文章主要介紹了C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

介紹完了list類的相關(guān)內(nèi)容后:C++初階:適合新手的手撕list(模擬實(shí)現(xiàn)list)
接下來進(jìn)入新的篇章,stack和queue的介紹以及模擬:



1.stack的初步介紹

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法

  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:尾部刪除元素操作

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

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法


2.stack的使用

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法

函數(shù) 說明
stack() 構(gòu)造空的棧
empty() 檢測stack是否為空
size() 返回stack中元素的個數(shù)
top() 返回棧頂元素的引用
push() 將元素val壓入stack中
pop() 將stack中尾部的元素彈出
#include<iostream>
#include<stack>
using namespace std;

int main()
{
	stack<int> st;//一個空棧
	st.push(1);
	st.push(2);
	st.push(3);//push進(jìn)去3個
	while (!st.empty())//當(dāng)st不空進(jìn)循環(huán)
	{
		cout << st.top() << endl;//輸出棧頂元素
		st.pop();//棧頂出棧
	}//遍歷結(jié)束

}

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法


3.queue的初步介紹

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法

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

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

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

  • empty:檢測隊列是否為空
  • size:返回隊列中有效元素的個數(shù)
  • front:返回隊頭元素的引用
  • back:返回隊尾元素的引用
  • push_back:在隊列尾部入隊列
  • pop_front:在隊列頭部出隊列
  1. 標(biāo)準(zhǔn)容器類deque和list滿足了這些要求。默認(rèn)情況下,如果沒有為queue實(shí)例化指定容器類,則使用標(biāo)準(zhǔn)容器deque。

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法


4.queue的使用

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法

函數(shù) 說明
queue() 構(gòu)造空的隊列
empty() 檢測隊列是否為空,是返回true,否則返回false
size() 返回隊列中有效元素的個數(shù)
front() 返回隊頭元素的引用
back() 返回隊尾元素的引用
push() 在隊尾將元素val入隊列
pop() 將隊頭元素出隊列
#include<iostream>
#include<queue>
using namespace std;

int main()
{
	queue<int> q;//一個空隊列
	q.push(1);
	q.push(2);
	q.push(3);//push進(jìn)去3個
	while (!q.empty())//當(dāng)q不空進(jìn)循環(huán)
	{
		cout << q.front() << endl;//輸出隊頭元素
		q.pop();//出隊
	}//遍歷結(jié)束
	return 0;
}

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法


5.容器適配器

5.1含義

容器適配器是一種將現(xiàn)有的容器類型適配為不同接口的容器的工具。C++標(biāo)準(zhǔn)庫提供了三種主要的容器適配器:棧(stack)、隊列(queue)和優(yōu)先隊列(priority_queue)。這些適配器都是基于現(xiàn)有的序列容器(如vector、deque或list)實(shí)現(xiàn)的,但提供了不同的接口和行為。

  1. 棧(stack):棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),它只允許在棧頂進(jìn)行插入和刪除操作。在C++中,棧適配器基于deque或vector實(shí)現(xiàn),提供了push、pop、top等操作。
  2. 隊列(queue):隊列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),它允許在隊列的前端進(jìn)行刪除操作,在隊列的后端進(jìn)行插入操作。在C++中,隊列適配器也基于deque或list實(shí)現(xiàn),提供了push、pop、front、back等操作。
  3. 優(yōu)先隊列(priority_queue):優(yōu)先隊列是一種特殊的隊列,它根據(jù)元素的優(yōu)先級進(jìn)行排序。在C++中,優(yōu)先隊列適配器基于vector實(shí)現(xiàn),提供了push、pop、top等操作。

今天先來模擬棧和隊列。優(yōu)先隊列,下次單獨(dú)細(xì)講

怎么理解“適配為不同接口的容器”:

容器適配器(上述三種)提供的操作接口與底層容器的操作接口不同。雖然容器適配器底層使用了常見的序列容器(如vector、deque或list)來存儲數(shù)據(jù),但是它們暴露的操作接口與這些底層容器不同。

舉個例子,讓我們比較一下棧(stack)適配器和vector容器的接口:

  1. 棧(stack)適配器的接口
  • push:將元素壓入棧頂
  • pop:彈出棧頂元素
  • top:訪問棧頂元素
  1. vector容器的接口
  • push_back:在vector的末尾插入元素
  • pop_back:刪除vector的末尾元素
  • back:訪問vector的末尾元素

如你所見,盡管棧適配器的底層容器可能是vector,但它提供了與vector不同的操作接口。棧適配器隱藏了vector的細(xì)節(jié),只暴露了棧的相關(guān)操作,使得我們可以更方便地使用棧這種數(shù)據(jù)結(jié)構(gòu)。

5.2STL標(biāo)準(zhǔn)庫中stack和queue的底層結(jié)構(gòu)

雖然stack和queue中也可以存放元素,但在STL中并沒有將其劃分在容器的行列,而是將其稱為容器適配器,這是因?yàn)閟tack和隊列只是對其他容器的接口進(jìn)行了包裝,STL中stack和queue默認(rèn)使用deque,比如:

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法


6.模擬stack和queue

文件規(guī)劃和一覽

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法

stack.h:用來實(shí)現(xiàn)stack

queue.h:用來實(shí)現(xiàn)queue

test.cpp:進(jìn)行測試

6.1模擬stack(stack.h)

#pragma once

namespace MyStack
{
	template<class T, class Container = deque<T>>
	class stack
	{
	public:
		//構(gòu)造函數(shù)、析構(gòu)函數(shù)之類的會去調(diào)用傳過來的的類的

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

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

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

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

	private:
		Container _con;//封裝這個類型
	};
}

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法

6.2模擬queue(queue.h)

#pragma once

namespace MyQueue
{
	template<class T, class Container = deque<T>>
	class queue
	{
	public:
		//構(gòu)造函數(shù)、析構(gòu)函數(shù)之類的會去調(diào)用傳過來的的類的

		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;//封裝這個類型
	};
}

C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn),c++學(xué)習(xí),c++,開發(fā)語言,深度學(xué)習(xí),java,c語言,數(shù)據(jù)結(jié)構(gòu),算法


好啦大家,這次就到這里啦!!下次就帶來優(yōu)先級隊列priority_queue的介紹和模擬。感謝大家文章來源地址http://www.zghlxwxcb.cn/news/detail-826615.html

到了這里,關(guān)于C++初階:容器適配器介紹、stack和queue常用接口詳解及模擬實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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++】STL中stack,queue容器適配器的模擬實(shí)現(xiàn)(使用deque容器)

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

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

    2024年02月15日
    瀏覽(31)
  • 容器適配器---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)先級隊列的模擬實(shí)現(xiàn) 適配器是一種設(shè)計模式(設(shè)計模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計經(jīng)驗(yàn)的總結(jié)),該種模式是將一個類的接口轉(zhuǎn)換成客戶

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

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

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

    2023年04月26日
    瀏覽(24)
  • 【C++從入門到放棄】stack和queue的深度剖析及空間適配器的介紹

    【C++從入門到放棄】stack和queue的深度剖析及空間適配器的介紹

    ?????作者: @情話0.0 ??專欄:《C++從入門到放棄》 ??個人簡介:一名雙非編程菜鳥,在這里分享自己的編程學(xué)習(xí)筆記,歡迎大家的指正與點(diǎn)贊,謝謝! ??此篇博客將談及到的stack、queue和priority_queue都不是STL的標(biāo)準(zhǔn)容器,而是一種空間適配器。它是通過對一種容器進(jìn)行

    2024年02月11日
    瀏覽(19)
  • STL: 容器適配器stack 與 queue

    STL: 容器適配器stack 與 queue

    ? 目錄 1.容器適配器 1.1 STL標(biāo)準(zhǔn)庫中stack和queue的底層結(jié)構(gòu) 1.2 deque的簡單介紹(了解) 1.2.1 deque的原理介紹 1.2.2 deque的缺陷 1.2.3 為什么選擇deque作為stack和queue的底層默認(rèn)容器 2. stack的介紹和使用 2.1 stack的介紹 ?2.2 stack的使用 2.3 利用deque模擬實(shí)現(xiàn)stack 3.queue的介紹和使用 3.1 queue的

    2024年02月05日
    瀏覽(24)
  • 【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)
  • 【C++干貨鋪】適配器 | stack | queue

    【C++干貨鋪】適配器 | stack | queue

    ========================================================================= 個人主頁點(diǎn)擊直達(dá): 小白不是程序媛 C++系列學(xué)習(xí)專欄: C++干貨鋪 代碼倉庫: Gitee ========================================================================= 目錄 stack的介紹和使用 stack的介紹 stack的使用 queue的介紹和使用 queue的介紹 qu

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

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

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

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

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

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

    2024年02月04日
    瀏覽(19)
  • 【C++】容器適配器之priority_queue & 仿函數(shù)

    【C++】容器適配器之priority_queue & 仿函數(shù)

    我們和學(xué)習(xí)之前的容器一樣,可以使用cplusplus官網(wǎng)進(jìn)行學(xué)習(xí):priority_queue文檔介紹 priority_queue(優(yōu)先級隊列)是一種容器適配器,它 和queue使用同一個頭文件,其底層結(jié)構(gòu)是一個堆,并且默認(rèn)情況下是一個大根堆,此外,priority_queue也不支持迭代器,這是為了不破壞堆的結(jié)構(gòu)使用

    2024年02月01日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包