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

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解

這篇具有很好參考價(jià)值的文章主要介紹了【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一,棧_刷題必備

二,stack實(shí)現(xiàn)

1.什么是容器適配器

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

了解補(bǔ)充:容器——deque?

1. deque的缺陷

2. 為什么選擇deque作為stack和queue的底層默認(rèn)容器

三,queue實(shí)現(xiàn)

1. 普通queue?

2,優(yōu)先級(jí)隊(duì)列(有難度)

<1>. 功能

<2>. 模擬實(shí)現(xiàn)

1). 利用迭代器_構(gòu)造

2).仿函數(shù)

sort函數(shù)中的仿函數(shù)使用理解

結(jié)語


【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

一,棧_刷題必備

常見接口:?

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

?簡單應(yīng)用,刷點(diǎn)題:

155.?最小棧

棧的壓入、彈出序列_牛客題霸_??途W(wǎng)

150.?逆波蘭表達(dá)式求值

二,stack實(shí)現(xiàn)

思路:在C語言期間,我們可以通過鏈表,數(shù)組形式實(shí)現(xiàn)過stack,而數(shù)組形式效率更高,所以stack的實(shí)現(xiàn)可以直接復(fù)用vector接口,包裝成棧先進(jìn)后出的特性

#pragma once
#include <iostream>
#include <vector>
#include <list>
using namespace std;
namespace my_s_qu
{
	template <class T >
	class stack
	{
	public:
		void push_back(const T& x)
		{
			Data.push_back(x);
		}

		void Pop()
		{
			Data.pop_back();
		}

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

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

		bool empty() const
		{
			return Data.empty();
		}

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

	private:
		vector<T> Data;
	};
}

很簡單不是嗎? 到這里并沒有結(jié)束,我們發(fā)現(xiàn),我們的棧只能通過vector實(shí)現(xiàn)。根據(jù)c++標(biāo)準(zhǔn)庫,我們還差個(gè)適配器的實(shí)現(xiàn),換句話說,我們實(shí)現(xiàn)的棧不支持容器適配器。?

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

1.什么是容器適配器

適配器是一種設(shè)計(jì)模式(設(shè)計(jì)模式是一套被反復(fù)使用的、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)), 該種模式是將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

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

雖然stack和queue中也可以存放元素,但在STL中并沒有將其劃分在容器的行列,而是將其稱為 容器適配器,這是因?yàn)閟tack和隊(duì)列只是對(duì)其他容器的接口進(jìn)行了包裝,STL中stack和queue默認(rèn)使用 deque。
【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

回到我們棧的實(shí)現(xiàn),我們僅支持vector模式設(shè)計(jì),優(yōu)化為成容器適配器支持所有容器,都能支持棧的先進(jìn)后出的特性。(在我看來這中思想更為重要)

namespace my_s_qu
{
	template <class T, class container = deque<T> >  // 添加容器模板
	{
	public:
		void push_back(const T& x)
		{
			Data.push_back(x);
		}

......
private:
		container Data;  // 容器換成模板
	};
}

其中deque又是什么?

了解補(bǔ)充:容器——deque?

deque(雙端隊(duì)列):是一種雙開口的"連續(xù)"空間的數(shù)據(jù)結(jié)構(gòu),雙開口的含義是:可以在頭尾兩端進(jìn)行插入和刪除操作,且時(shí)間復(fù)雜度為O(1),與vector比較,頭插效率高,不需要搬移元素;與list比較,空間利用率比較高。
【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言
deque 并不是 真正 連續(xù)的空間 ,而是由 一段段連續(xù)的小空間拼接而成的 ,實(shí)際 deque 類似于一個(gè)動(dòng)態(tài)的 二維數(shù)組,其底層結(jié)構(gòu)如下圖所示: 【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言
雙端隊(duì)列底層是一段假象的連續(xù)空間,實(shí)際是分段連續(xù)的,為了維護(hù)其“整體連續(xù)”以及隨機(jī)訪問的假象,落在了deque的迭代器身上,因此deque的迭代器設(shè)計(jì)就比較復(fù)雜,如下圖所示:

?【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

那deque是如何借助其迭代器維護(hù)其假想連續(xù)的結(jié)構(gòu)呢??

?【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

1. deque的缺陷

優(yōu)勢(shì):?

與vector比較,deque的 優(yōu)勢(shì)是: 頭部插入和刪除效率高。? 不需要搬移元素,效率特別高,而且在 擴(kuò)容時(shí),也不需要搬移大量的元素,因此其效率是必vector高的。
與list比較, 優(yōu)勢(shì)支持隨機(jī)訪問。其底層是連續(xù)空間, 空間利用率比較高,不需要存儲(chǔ)額外字段。

缺陷:??

不適合遍歷。
因?yàn)樵诒闅v時(shí),deque的迭代器要 頻繁的去 計(jì)算每個(gè)數(shù)據(jù)的位置,導(dǎo)致 效率低下,而序列式場景中,可能需要經(jīng)常遍歷,因此在實(shí)際中,需要線性結(jié)構(gòu)時(shí),大多數(shù)情況下優(yōu)先考慮vector和list, deque的應(yīng)用并不多,而目前能看到的一個(gè)應(yīng)用就是, STL用其作為stack和queue的底層數(shù)據(jù)結(jié)構(gòu)。

2. 為什么選擇deque作為stack和queue的底層默認(rèn)容器

stack是一種后進(jìn)先出的特殊線性數(shù)據(jù)結(jié)構(gòu),因此只要具有push_back()和pop_back()操作的線性結(jié)構(gòu),都可以作為stack的底層容器,比如vector和list都可以;queue是先進(jìn)先出的特殊線性數(shù)據(jù)結(jié)構(gòu), 只要具有push_back和pop_front操作的線性結(jié)構(gòu),都可以作為queue的底層容器,比如list。但是STL中對(duì)sack和queue默認(rèn)選擇deque作為其底層容器,主要是因?yàn)椋?
1. stack和queue不需要遍歷(因此stack和queue沒有迭代器),只需要在固定的一端或者兩端進(jìn)行操作。
2. 在stack中元素增長時(shí),deque比vector的效率高(擴(kuò)容時(shí)不需要搬移大量數(shù)據(jù));queue中的元素增長時(shí),deque不僅效率高,而且內(nèi)存使用率高。
結(jié)合了deque的優(yōu)點(diǎn),而完美的避開了其缺陷。

三,queue實(shí)現(xiàn)

1. 普通queue?

?queue實(shí)現(xiàn),我們這次以容器適配器進(jìn)行。

template <class T, class container = deque<T>>
	class queue
	{
	public:
		void push_back(const T& x)
		{
			Data.push_back(x);
		}


		void Pop()
		{
			Data.pop_front();
		}

		T& back()
		{
			return Data.back();
		}

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

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

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

		bool empty() const
		{
			return Data.empty();
		}

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

	private:
		container Data;
	};

2,優(yōu)先級(jí)隊(duì)列(有難度)

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

簡介:

1. 優(yōu)先隊(duì)列是一種容器適配器,根據(jù)嚴(yán)格的弱排序標(biāo)準(zhǔn),它的第一個(gè)元素總是它所包含的元素中最大的。
2. 優(yōu)先級(jí)隊(duì)列底層類似于堆,在堆中可以隨時(shí)插入元素,并且只能檢索 最大堆元素(優(yōu)先隊(duì)列中位于頂部的元素)。
3. 優(yōu)先隊(duì)列被實(shí)現(xiàn)為容器適配器,容器適配器即將特定容器類封裝作為其底層容器類,queue提供一組特定的成員函數(shù)來訪問其元素。元素從特定容器的“尾部”彈出(Pop),其稱為優(yōu)先隊(duì)列的頂部。
5. 標(biāo)準(zhǔn)容器類vector和deque滿足這些需求。默認(rèn)情況下,如果沒有為特定的priority_queue類實(shí)例化指定容器類,則使用vector
6. 需要 支持隨機(jī)訪問迭代器,以便始終在內(nèi)部保持堆結(jié)構(gòu)。容器適配器通過在需要時(shí)自動(dòng)調(diào)用算法函數(shù)make_heap、push_heap和pop_heap來自動(dòng)完成此操作。

<1>. 功能

priority_queue()/priority_queue(fifirst, last)? ? ??構(gòu)造一個(gè)空的優(yōu)先級(jí)隊(duì)列
empty( )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?檢測(cè)優(yōu)先級(jí)隊(duì)列是否為空,是返回true,否則返回false
top( )? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回優(yōu)先級(jí)隊(duì)列中最大(最小元素),即堆頂元素
push(x)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在優(yōu)先級(jí)隊(duì)列中插入元素x
pop()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除優(yōu)先級(jí)隊(duì)列中最大(最小)元素,即堆頂元素
pop_back()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 刪除容器尾部元素

<2>. 模擬實(shí)現(xiàn)

完成優(yōu)先級(jí)隊(duì)列,需要用到堆方面的知識(shí),如果堆大家不太熟悉了,建議將堆實(shí)現(xiàn)內(nèi)容復(fù)習(xí)一遍:

詳解樹與二叉樹的概念,結(jié)構(gòu),及實(shí)現(xiàn)(上篇)_花果山~~程序猿的博客-CSDN博客

?利用堆方面知識(shí),完成最基礎(chǔ)的框架:

namespace my_priority_queue
{
	template <class T, class container = vector<T>> 
	class priority_queue
	{
	public:
		// 自定義類型,不需要給他初始化

		void ajust_up(size_t child)
		{
			int parent;
			while (child > 0)
			{
				parent = child / 2;
				if (_pri_queue[child] > _pri_queue[parent])  // 寫大堆
				{
					std::swap(_pri_queue[child], _pri_queue[parent]);
					child = parent;
					parent = child / 2;
				}
				else
				{
					break;
				}
			}
		}

		T& top()
		{
			return _pri_queue[0];
		}

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

		void push(const T& x)
		{
			_pri_queue.push_back(x);
			// 向上調(diào)整
			ajust_up(_pri_queue.size() - 1);
		}

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

		void ajust_down()
		{
			size_t  parent = 0;
			size_t child = 2 * parent + 1;

			while (child < _pri_queue.size())
			{
				if (child + 1 < _pri_queue.size() && _pri_queue[child + 1] >  _pri_queue[child])
				{
					child++;
				}

				if (_pri_queue[parent] < _pri_queue[child])
				{
					std::swap(_pri_queue[parent], _pri_queue[child]);
					parent = child;
					child = parent * 2 + 1;
				}
				else
				{
					break;
				}
			}
		}

		void pop()
		{
			std::swap(_pri_queue[0], _pri_queue[size() - 1]);
			// 向下調(diào)整
			_pri_queue.pop_back();
			ajust_down();
		}

	private:
		container _pri_queue;
	};
}

這里我們會(huì)有一個(gè)疑問,那我們要構(gòu)建升序怎么辦??仿函數(shù)會(huì)解釋

1). 利用迭代器_構(gòu)造
// 自定義類型,不需要給他初始化
		priority_queue()
		{}

		template  <class newiterator>
		priority_queue(newiterator begin, newiterator end)
			: _pri_queue()
		{
			while (begin != end)
			{
				push(*begin);
				begin++;
			}
		}
2).仿函數(shù)

在該場景下,我們的優(yōu)先級(jí)隊(duì)列已經(jīng)實(shí)現(xiàn)了降序的功能,那我們?nèi)绾螌?shí)現(xiàn)升序? 什么你說再寫一段,改一下符號(hào)??

這里仿函數(shù)就得引出了,仿函數(shù),那么它并不是函數(shù),那是什么? (仿函數(shù)比如:less, greater)

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言

?仿函數(shù)本質(zhì)是一個(gè)類,根據(jù)上圖中,compare 模板,說明這里的仿函數(shù),就是用來靈活改變大小堆符號(hào)的。

我們直接實(shí)現(xiàn)結(jié)果:

    template <class T>
	struct less
	{
		bool operator()(const T& left, const T& right)const
		{
			return left < right;
		}
	};

	template <class T>
	struct greater
	{
		bool operator()(const T& left, const T& right)const
		{
			return left > right;
		}
	};

?這個(gè)兩個(gè)類都是重載了operator(),因此我們?cè)趯?shí)例化對(duì)象后,使用:

template <class T,class compare = less<T>>

compare? ?t;

cout <<? t(1, 2) << endl;? ? ?

從外表來看,就像一個(gè)函數(shù)調(diào)用,但實(shí)際是,一個(gè)類的成員函數(shù)的調(diào)用

t.operator(1,2)?

?這樣我們就可以直接改變仿函數(shù)的類,來控制大小堆了。?

sort函數(shù)中的仿函數(shù)使用理解

函數(shù)模板中:?

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言?sort函數(shù)作為行參中使用:

【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解,C++——從入門到入土,安排!,c++,數(shù)據(jù)結(jié)構(gòu),開發(fā)語言??

sort(s.begin, s.end, greater<int> () );? ?// 函數(shù)中是要做參數(shù)的,我們加個(gè)括號(hào)就是一個(gè)匿名對(duì)象

結(jié)語

? ?本小節(jié)就到這里了,感謝小伙伴的瀏覽,如果有什么建議,歡迎在評(píng)論區(qū)評(píng)論,如果給小伙伴帶來一些收獲請(qǐng)留下你的小贊,你的點(diǎn)贊和關(guān)注將會(huì)成為博主創(chuàng)作的動(dòng)力。文章來源地址http://www.zghlxwxcb.cn/news/detail-636047.html

到了這里,關(guān)于【STL】優(yōu)先級(jí)隊(duì)列&反向迭代器詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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——容器適配器priority_queue(優(yōu)先級(jí)隊(duì)列)詳解 及 仿函數(shù)的介紹和使用

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

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

    2024年02月07日
    瀏覽(26)
  • 【STL】優(yōu)先級(jí)隊(duì)列剖析及模擬實(shí)現(xiàn)

    【STL】優(yōu)先級(jí)隊(duì)列剖析及模擬實(shí)現(xiàn)

    ? 作者 : 阿潤菜菜 ?? 專欄 : C++ 優(yōu)先隊(duì)列是一種 容器適配器 ,根據(jù)嚴(yán)格的弱排序標(biāo)準(zhǔn),它的第一個(gè)元素總是它所包含的元素中最大的(默認(rèn)大堆)。優(yōu)先級(jí)隊(duì)列的內(nèi)部實(shí)現(xiàn)通常是用 堆 來維護(hù)元素的優(yōu)先級(jí),使得每次出隊(duì)的元素都是當(dāng)前隊(duì)列中優(yōu)先級(jí)最高的元素。 優(yōu)先

    2023年04月22日
    瀏覽(22)
  • C++ STL學(xué)習(xí)之【優(yōu)先級(jí)隊(duì)列】

    C++ STL學(xué)習(xí)之【優(yōu)先級(jí)隊(duì)列】

    ?個(gè)人主頁: 北 海 ??所屬專欄: C++修行之路 ??操作環(huán)境: Visual Studio 2019 版本 16.11.17 優(yōu)先級(jí)隊(duì)列 priority_queue 是容器適配器中的一種,常用來進(jìn)行對(duì)數(shù)據(jù)進(jìn)行優(yōu)先級(jí)處理,比如優(yōu)先級(jí)高的值在前面,這其實(shí)就是初階數(shù)據(jù)結(jié)構(gòu)中的 堆 ,它倆本質(zhì)上是一樣?xùn)|西,底層都是以數(shù)

    2024年02月05日
    瀏覽(28)
  • C++基礎(chǔ)(三)——STL優(yōu)先級(jí)隊(duì)列

    模板輸入 1、元素類型 2、容器類型 3、函數(shù)對(duì)象類型 priority_queueint name; priority_queue默認(rèn)為大頂堆 故定義也可以寫作: priority_queueint, vectorint, lessint ay; 如果需要構(gòu)建一個(gè)小頂堆,可以改變定義方式為: priority_queueint, vectorint, greaterint ay; 使用std::greater模板無需自定義比較函數(shù)。

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

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

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

    2024年02月16日
    瀏覽(27)
  • 『C++ - STL』之優(yōu)先級(jí)隊(duì)列( priority_queue )

    『C++ - STL』之優(yōu)先級(jí)隊(duì)列( priority_queue )

    什么是優(yōu)先級(jí)隊(duì)列,從該名中可以知道他一定有隊(duì)列的一定屬性,即先入先出(LILO),而這里的優(yōu)先級(jí)則可以判斷出它的另一個(gè)特點(diǎn)就是可以按照一定的條件將符合該條件的先進(jìn)行出隊(duì),這就是優(yōu)先級(jí)隊(duì)列; 而在數(shù)據(jù)結(jié)構(gòu)中有一個(gè)支持該操作的結(jié)構(gòu) - 堆( heap ); 而在STL中,這個(gè)

    2024年02月07日
    瀏覽(22)
  • 【C++初階10-stack&queue】STL中的棧和隊(duì)列(附優(yōu)先級(jí)隊(duì)列

    本期分享:STL中的棧和隊(duì)列。 在數(shù)據(jù)結(jié)構(gòu)初階時(shí),我們已經(jīng)學(xué)習(xí)這來那個(gè)兩種數(shù)據(jù)結(jié)構(gòu),如今來看STL中的,不過是更加標(biāo)準(zhǔn)化。而實(shí)現(xiàn)起來,會(huì)簡單得超乎你想象! 文中不足錯(cuò)漏之處望請(qǐng)斧正! STL中的棧和隊(duì)列是容器適配器。容器適配器是對(duì)某種已有容器的再次封裝。 比如

    2024年02月06日
    瀏覽(19)
  • 【C++進(jìn)階(六)】STL大法--棧和隊(duì)列深度剖析&優(yōu)先級(jí)隊(duì)列&適配器原理

    【C++進(jìn)階(六)】STL大法--棧和隊(duì)列深度剖析&優(yōu)先級(jí)隊(duì)列&適配器原理

    ??博主CSDN主頁:杭電碼農(nóng)-NEO?? ? ?專欄分類:C++從入門到精通? ? ??代碼倉庫:NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)習(xí)C++ ? ???? 和C語言學(xué)習(xí)期間的學(xué)習(xí)順序一樣 順序表,鏈表過了就是棧和隊(duì)列 但是棧和隊(duì)列非常特殊,它的內(nèi)部結(jié)構(gòu) 并不是靠自己實(shí)現(xiàn)的,而是一種 適配

    2024年02月08日
    瀏覽(28)
  • 【C++】STL使用仿函數(shù)控制優(yōu)先級(jí)隊(duì)列priority_queue

    【C++】STL使用仿函數(shù)控制優(yōu)先級(jí)隊(duì)列priority_queue

    本文章講解C++STL的容器適配器:priority_queue的實(shí)現(xiàn),并實(shí)現(xiàn)仿函數(shù)控制priority_queue底層。 priority_queue叫做優(yōu)先級(jí)隊(duì)列,它的底層結(jié)構(gòu)是堆,在庫中,默認(rèn)生成的是大堆 在庫的實(shí)現(xiàn)中,使用vector作為該優(yōu)先級(jí)隊(duì)列的適配容器。 由于priority_queue也是一個(gè)適配器,所以它的接口函數(shù)

    2024年02月16日
    瀏覽(30)
  • 【C++】STL優(yōu)先級(jí)隊(duì)列(priority_queue)功能介紹以及模擬實(shí)現(xiàn)

    【C++】STL優(yōu)先級(jí)隊(duì)列(priority_queue)功能介紹以及模擬實(shí)現(xiàn)

    點(diǎn)進(jìn)來的小伙伴不知道學(xué)過數(shù)據(jù)結(jié)構(gòu)里的堆沒有,如果學(xué)過的話,那就好說了,優(yōu)先級(jí)隊(duì)列就是堆,如果沒學(xué)過,沒關(guān)系,可以參考一下我之前寫的一篇關(guān)于堆的博客,可以點(diǎn)進(jìn)去看看:【數(shù)據(jù)結(jié)構(gòu)】堆(包含堆排序和TOPK問題) 那么了解過堆了的話,我就不講那么細(xì)致了,

    2024年02月16日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包