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

數(shù)據(jù)結(jié)構(gòu)——優(yōu)先隊(duì)列c++詳解

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)——優(yōu)先隊(duì)列c++詳解。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

優(yōu)先隊(duì)列的定義

百度百科定義

優(yōu)先隊(duì)列是0個(gè)或多個(gè)元素的集合,每個(gè)元素都有一個(gè)優(yōu)先權(quán)或值,對優(yōu)先隊(duì)列執(zhí)行的操作有1) 查找;2) 插入一個(gè)新元素;3) 刪除.在最小優(yōu)先隊(duì)列(min priority queue)中,查找操作用來搜索優(yōu)先權(quán)最小的元素,刪除操作用來刪除該元素;對于最大優(yōu)先隊(duì)列(max priority queue),查找操作用來搜索優(yōu)先權(quán)最大的元素,刪除操作用來刪除該元素.優(yōu)先權(quán)隊(duì)列中的元素可以有相同的優(yōu)先權(quán),查找與刪除操作可根據(jù)任意優(yōu)先權(quán)進(jìn)行.

簡化一點(diǎn)來說:

優(yōu)先隊(duì)列是一種比較重要的數(shù)據(jù)結(jié)構(gòu),它是有二項(xiàng)隊(duì)列編寫而成的,可以以O(shè)(log n) 的效率查找一個(gè)隊(duì)列中的最大值或者最小值,其中是最大值還是最小值是根據(jù)創(chuàng)建的優(yōu)先隊(duì)列的性質(zhì)來決定的。

priority_queue

其實(shí)priority_queue就是一個(gè)stl的容器。

模板參數(shù)?

優(yōu)先隊(duì)列有三個(gè)參數(shù),其聲明形式為:

priority_queue< type, container, function > 名稱

后兩個(gè)是可以省略的,就是按照默認(rèn)(降序)來的,第一個(gè)必須寫。

其中:

  • type:數(shù)據(jù)類型;
  • container:實(shí)現(xiàn)優(yōu)先隊(duì)列的底層容器;
  • function:元素之間的比較方式;

對于container,要求必須是數(shù)組形式實(shí)現(xiàn)的容器

在STL中,默認(rèn)情況下(不加后面兩個(gè)參數(shù))是以vector為容器,以 operator< 為比較方式,所以在只使用第一個(gè)參數(shù)時(shí),優(yōu)先隊(duì)列默認(rèn)是一個(gè)最大堆,每次輸出的堆頂元素是此時(shí)堆中的最大元素。

priority_queue成員函數(shù)

假設(shè)type類型為int,則:

假設(shè)type類型為int,則:
bool empty() const
返回值為true,說明隊(duì)列為空;
int size() const
返回優(yōu)先隊(duì)列中元素的數(shù)量;
void pop()
刪除隊(duì)列頂部的元素,也即根節(jié)點(diǎn)
int top()
返回隊(duì)列中的頂部元素,但不刪除該元素;
void push(int arg)
將元素arg插入到隊(duì)列之中;

大頂堆與小頂堆

大頂堆(降序)

//構(gòu)造一個(gè)空的優(yōu)先隊(duì)列(此優(yōu)先隊(duì)列默認(rèn)為大頂堆)
priority_queue<int> big_heap;   

//另一種構(gòu)建大頂堆的方法
priority_queue<int,vector<int>,less<int> > big_heap2;   

小頂堆(升序)

//構(gòu)造一個(gè)空的優(yōu)先隊(duì)列,此優(yōu)先隊(duì)列是一個(gè)小頂堆
priority_queue<int,vector<int>,greater<int> > small_heap;   

注意事項(xiàng)

需要注意的是,如果使用less和greater,需要頭文件:

#include <functional>

代碼案例

#include <bits/stdc++.h>
using namespace std;
int main()
{
	//對于基礎(chǔ)類型 默認(rèn)是大頂堆
	priority_queue<int> a;
	//等同于 priority_queue<int, vector<int>, less<int> > a;

	// 這樣就是小頂堆
	// 好習(xí)慣  >>中間要加空格 
	priority_queue<int, vector<int>, greater<int> > c;
	priority_queue<string> b;

	for (int i = 0; i < 5; i++)
	{
		a.push(i);
		c.push(i);
	}

	// 降序輸出
	while (!a.empty())
	{
		cout << a.top() << ' ';
		a.pop();
	}
	cout << endl;

	// 升序輸出
	while (!c.empty())
	{
		cout << c.top() << ' ';
		c.pop();
	}
	cout << endl;

	b.push("abc");
	b.push("abcd");
	b.push("cbd");
	while (!b.empty())
	{
		cout << b.top() << ' ';
		b.pop();
	}
	cout << endl;
	return 0;
}

請您點(diǎn)贊,關(guān)注加收藏,謝謝您的閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-705169.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)——優(yōu)先隊(duì)列c++詳解的文章就介紹完了。如果您還想了解更多內(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)文章

  • 數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列詳解(c語言版)

    數(shù)據(jù)結(jié)構(gòu)-循環(huán)隊(duì)列詳解(c語言版)

    目錄 一、什么是循環(huán)隊(duì)列? 二、特點(diǎn) 三、基本運(yùn)算 四、代碼實(shí)現(xiàn) ?1、初始化 2、入隊(duì) 3、出隊(duì) 4、隊(duì)滿? 5、隊(duì)空?? 6、輸出隊(duì)列 7、隊(duì)列大小 8、獲取隊(duì)首元素 五、隊(duì)列應(yīng)用場景 六、完整代碼 1、完整代碼 2、運(yùn)行結(jié)果 七、總結(jié) 前言 相比于鏈隊(duì)列, 循環(huán)隊(duì)列 有著內(nèi)存固

    2024年01月20日
    瀏覽(26)
  • (詳解)數(shù)據(jù)結(jié)構(gòu)-----------棧與隊(duì)列 c語言實(shí)現(xiàn)

    (詳解)數(shù)據(jù)結(jié)構(gòu)-----------棧與隊(duì)列 c語言實(shí)現(xiàn)

    本章將會詳細(xì)講解以下知識點(diǎn): 目錄 一:棧 ? ? ? ? 1:棧的定義,棧的特點(diǎn) ? ? ? ? 2:用什么結(jié)構(gòu)來實(shí)現(xiàn)棧與原因的分析? ? ? ? ??3:? (超詳解)棧的常用接口并且附上測試用例 二:隊(duì)列 ? ? ? ? 1:隊(duì)列的定義,隊(duì)列的特點(diǎn) ? ? ? ? 2:用什么結(jié)構(gòu)來實(shí)現(xiàn)隊(duì)列與原因的分析

    2024年02月11日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列詳解(C語言手撕)

    數(shù)據(jù)結(jié)構(gòu)之隊(duì)列詳解(C語言手撕)

    ??個(gè)人名片: ??作者簡介:一名樂于分享在學(xué)習(xí)道路上收獲的大二在校生 ??個(gè)人主頁??:GOTXX ??個(gè)人WeChat:ILXOXVJE ??本文由GOTXX原創(chuàng),首發(fā)CSDN?????? ??系列專欄:零基礎(chǔ)學(xué)習(xí)C語言----- 數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)之路----C++的學(xué)習(xí)之路 ??每日一句:如果沒有特別幸運(yùn),那就請?zhí)?/p>

    2024年03月10日
    瀏覽(30)
  • 【算法與數(shù)據(jù)結(jié)構(gòu)】 C語言實(shí)現(xiàn)單鏈表隊(duì)列詳解

    【算法與數(shù)據(jù)結(jié)構(gòu)】 C語言實(shí)現(xiàn)單鏈表隊(duì)列詳解

    前面我們學(xué)習(xí)了隊(duì)列的順序表的實(shí)現(xiàn),本節(jié)將用單鏈表實(shí)現(xiàn)隊(duì)列。 隊(duì)列也可以數(shù)組和鏈表的結(jié)構(gòu)實(shí)現(xiàn), 使用鏈表的結(jié)構(gòu)實(shí)現(xiàn)更優(yōu)一些,因?yàn)槿绻褂脭?shù)組的結(jié)構(gòu),出隊(duì)列在數(shù)組頭上出數(shù)據(jù),效率會比較低 。下面我們先復(fù)習(xí)一下隊(duì)列的基本概念: 隊(duì)列:只允許在一端進(jìn)行插入

    2024年04月11日
    瀏覽(94)
  • 優(yōu)先隊(duì)列----數(shù)據(jù)結(jié)構(gòu)

    優(yōu)先隊(duì)列----數(shù)據(jù)結(jié)構(gòu)

    不知道你玩過英雄聯(lián)盟嗎?英雄聯(lián)盟里面的防御塔會攻擊離自己最近的小兵,但是如果有炮車兵在塔內(nèi),防御塔會優(yōu)先攻擊炮車(因?yàn)榕谲嚨耐{性更大),只有沒有兵線在塔內(nèi)時(shí),防御塔才會攻擊英雄。所以你可以得出優(yōu)先級:距離最近的炮車 ?炮車 距離最近的小兵 小兵

    2024年02月06日
    瀏覽(19)
  • 「數(shù)據(jù)結(jié)構(gòu)」優(yōu)先級隊(duì)列

    ?? 個(gè)人主頁 :Ice_Sugar_7 ?? 所屬專欄 :Java數(shù)據(jù)結(jié)構(gòu) ?? 歡迎點(diǎn)贊收藏加關(guān)注哦! 優(yōu)先級隊(duì)列底層是用堆實(shí)現(xiàn)的 ,關(guān)于堆的實(shí)現(xiàn),之前的文章已經(jīng)詳細(xì)介紹過了,文章鏈接:二叉樹1:堆的實(shí)現(xiàn) 方法 功能 PriorityQueue() 創(chuàng)建一個(gè)空的優(yōu)先級隊(duì)列,默認(rèn)容量是11 PriorityQueue(int i

    2024年02月20日
    瀏覽(46)
  • 軟件開發(fā)中常用數(shù)據(jù)結(jié)構(gòu)介紹:C語言隊(duì)列

    軟件開發(fā)中常用數(shù)據(jù)結(jié)構(gòu)介紹:C語言隊(duì)列

    工作之余來寫寫C語言相關(guān)知識,以免忘記。今天就來聊聊 C語言實(shí)現(xiàn)循環(huán)隊(duì)列 ,我是分享人M哥,目前從事車載控制器的軟件開發(fā)及測試工作。 學(xué)習(xí)過程中如有任何疑問,可底下評論! 如果覺得文章內(nèi)容在工作學(xué)習(xí)中有幫助到你,麻煩 點(diǎn)贊收藏評論+關(guān)注 走一波!感謝各位的

    2024年02月11日
    瀏覽(25)
  • 數(shù)據(jù)結(jié)構(gòu):優(yōu)先級隊(duì)列(堆)

    數(shù)據(jù)結(jié)構(gòu):優(yōu)先級隊(duì)列(堆)

    隊(duì)列是一種先進(jìn)先出 (FIFO) 的數(shù)據(jù)結(jié)構(gòu) ,但有些情況下, 操作的數(shù)據(jù)可能帶有優(yōu)先級,一般出隊(duì) 列時(shí),可能需要優(yōu)先級高的元素先出隊(duì)列。 在這種情況下, 數(shù)據(jù)結(jié)構(gòu)應(yīng)該提供兩個(gè)最基本的操作,一個(gè)是返回最高優(yōu)先級對象,一個(gè)是添加新的對象 。這種數(shù)據(jù)結(jié)構(gòu)就是 優(yōu)先級

    2024年02月08日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)-優(yōu)先級隊(duì)列(堆)

    數(shù)據(jù)結(jié)構(gòu)-優(yōu)先級隊(duì)列(堆)

    文章目錄 目錄 文章目錄 前言 一 . 堆 二 . 堆的創(chuàng)建(以大根堆為例) 堆的向下調(diào)整(重難點(diǎn)) ?堆的創(chuàng)建 ?堆的刪除 向上調(diào)整 堆的插入 三 . 優(yōu)先級隊(duì)列 總結(jié) 大家好,今天給大家講解一下堆這個(gè)數(shù)據(jù)結(jié)構(gòu)和它的實(shí)現(xiàn) - 優(yōu)先級隊(duì)列 堆(Heap)是一種基于完全二叉樹的數(shù)據(jù)結(jié)構(gòu),具有

    2024年02月08日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】優(yōu)先級隊(duì)列——堆

    【數(shù)據(jù)結(jié)構(gòu)】優(yōu)先級隊(duì)列——堆

    ??????????個(gè)人主頁?????????? ??????????數(shù)據(jù)結(jié)構(gòu)專欄?????????? ??????????【數(shù)據(jù)結(jié)構(gòu)】非線性結(jié)構(gòu)——二叉樹?????????? 前面介紹過隊(duì)列,隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu),但有些情況下,操作的數(shù)據(jù)可能帶有優(yōu)先級,一般出隊(duì)列時(shí),可能

    2024年04月14日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包