最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++優(yōu)先隊(duì)列的使用小結(jié)

 更新時(shí)間:2023年11月22日 08:26:13   作者:飛翔的云中豬  
普通的隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),元素在隊(duì)列尾追加,而從隊(duì)列頭刪除,在優(yōu)先隊(duì)列中,元素被賦予優(yōu)先級(jí),本文主要介紹了C++優(yōu)先隊(duì)列的使用,感興趣的可以了解一下

1. 什么是priority_queue

priority_queue是C++中的容器,實(shí)現(xiàn)優(yōu)先隊(duì)列。由于底層采用堆實(shí)現(xiàn),所以插入和刪除操作的時(shí)間復(fù)雜度為O(logn),查找隊(duì)首元素的時(shí)間復(fù)雜度為O(1)。

2. 構(gòu)造priority_queue

【1】使用priority_queue需要先包含頭文件<queue>。以下是priority_queue的基本語法:

#include <queue>
priority_queue<int> pq;

默認(rèn)情況下,priority_queue是一個(gè)大頂堆,即隊(duì)首元素是最大的元素,由大到小排序

【2】如果是自定義比較,比如比較從小到大比較或不壞類中的某個(gè)元素,則在聲明priority_queue對(duì)象時(shí),需要指定元素類型和比較函數(shù)。

具體語法:

// 聲明一個(gè)元素類型為T,比較函數(shù)為Compare的priority_queue對(duì)象
priority_queue<T, vector<T>, Compare> pq;

其中,T為元素類型,std::vector<T>為底層容器類型,Compare為元素的比較函數(shù),是函數(shù)對(duì)象。

例如若要聲明一個(gè)整型優(yōu)先隊(duì)列,要求從小到大排序,可以這樣寫:

priority_queue<int,vector<int>,greater<int>> pq;

例如若要聲明一個(gè)字符串優(yōu)先隊(duì)列,要求按照字符串大小從小到大排序,可以這樣寫:

// 自定義比較函數(shù)
struct cmp {
    bool operator() (const std::string& s1, const std::string& s2) {
        return s1.size() > s2.size();  // 按字符串長度從小到大排序
    }
};

priority_queue<string, vector<string>, cmp> pq;

【3】用已有的優(yōu)先隊(duì)列賦值

priority_queue<int> pq(vec.begin(), vec.end()); // 創(chuàng)建一個(gè)包含vec中所有元素的優(yōu)先隊(duì)列

3. priority_queue的常用操作

3.1 插入元素

使用成員函數(shù)push()可以向priority_queue中插入一個(gè)元素,插入后會(huì)自動(dòng)按照優(yōu)先級(jí)調(diào)整元素位置。

pq.push(10); // 向隊(duì)列中插入元素10 pq.push(20); // 向隊(duì)列中插入元素20

3.2 訪問隊(duì)首元素

使用成員函數(shù)top()可以訪問priority_queue中的隊(duì)首元素,即最大(小)值。

int max_element = pq.top(); // 獲取大頂堆的隊(duì)首元素,即最大值

3.3 刪除隊(duì)首元素

使用成員函數(shù)pop()可以刪除priority_queue中的隊(duì)首元素,即最大(小)值。

pq.pop(); // 刪除大頂堆的隊(duì)首元素,即最大值

3.4 檢查隊(duì)列是否為空

使用成員函數(shù)empty()可以檢查priority_queue是否為空。

if (pq.empty()) { 
    // 隊(duì)列為空 
}

3.5 獲取隊(duì)列大小

使用成員函數(shù)size()可以獲取priority_queue中元素的個(gè)數(shù)。

int count = pq.size(); // 獲取隊(duì)列中元素的個(gè)數(shù)

到此這篇關(guān)于C++優(yōu)先隊(duì)列的使用小結(jié)的文章就介紹到這了,更多相關(guān)C++優(yōu)先隊(duì)列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Qt串口通信開發(fā)之QSerialPort模塊詳細(xì)使用方法與實(shí)例

    Qt串口通信開發(fā)之QSerialPort模塊詳細(xì)使用方法與實(shí)例

    這篇文章主要介紹了Qt串口通信開發(fā)之QSerialPort模塊詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算

    C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算

    這篇文章介紹了C++通過boost.date_time進(jìn)行時(shí)間運(yùn)算的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C++實(shí)現(xiàn)小型圖書管理系統(tǒng)

    C++實(shí)現(xiàn)小型圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)小型圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言超細(xì)致講解循環(huán)語句

    C語言超細(xì)致講解循環(huán)語句

    我們說到當(dāng)滿足特定條件時(shí),就會(huì)執(zhí)行if語句或者switch語句后面的語句,否則不執(zhí)行,但是這只能執(zhí)行一次,在日常生活中,有些事情是需要重復(fù)去做的,C語句就為此引入了循環(huán)語句。所以今天繼續(xù)為大家分享C語言循環(huán)家族
    2022-05-05
  • 項(xiàng)目之C++如何實(shí)現(xiàn)數(shù)據(jù)庫連接池

    項(xiàng)目之C++如何實(shí)現(xiàn)數(shù)據(jù)庫連接池

    這篇文章主要介紹了項(xiàng)目之C++如何實(shí)現(xiàn)數(shù)據(jù)庫連接池問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • C語言popen函數(shù)調(diào)用其他進(jìn)程返回值示例詳解

    C語言popen函數(shù)調(diào)用其他進(jìn)程返回值示例詳解

    這篇文章主要為大家介紹了C語言popen函數(shù)調(diào)用其他進(jìn)程返回值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • C語言之字符串逆序函數(shù)的三種實(shí)現(xiàn)方式

    C語言之字符串逆序函數(shù)的三種實(shí)現(xiàn)方式

    文章介紹了三種字符串逆序的方法:非函數(shù)、函數(shù)非遞歸、函數(shù)遞歸,并詳細(xì)解釋了每種方法的代碼實(shí)現(xiàn)和原理,最后還探討了兩次逆序打印數(shù)組的面試題,通過圖解展示了逆序過程
    2026-04-04
  • OpenCV實(shí)現(xiàn)人臉檢測

    OpenCV實(shí)現(xiàn)人臉檢測

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)人臉檢測的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • c/c++中opencv雙邊濾波的實(shí)現(xiàn)

    c/c++中opencv雙邊濾波的實(shí)現(xiàn)

    本文主要介紹了c/c++中opencv雙邊濾波的實(shí)現(xiàn),通過空間與顏色相似度雙重權(quán)重實(shí)現(xiàn)圖像去噪與邊緣保留,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-06-06
  • C語言自定義類型全解析

    C語言自定義類型全解析

    在C語言中自定義類型主要有結(jié)構(gòu)體類型、位段、枚舉類型、聯(lián)合體類型,自定義類型是面試常會(huì)碰到的內(nèi)容,今天我們來詳細(xì)了解一下它
    2022-02-02

最新評(píng)論

石首市| 永昌县| 南木林县| 长岭县| 高清| 施甸县| 定陶县| 洪洞县| 龙川县| 旺苍县| 辽阳市| 宜阳县| 北辰区| 杭州市| 胶州市| 汕尾市| 大悟县| 廊坊市| 桦川县| 襄樊市| 桑植县| 肥东县| 灌南县| 玉山县| 镇赉县| 黑河市| 晋中市| 蓝山县| 江孜县| 宝兴县| 柳州市| 原阳县| 蒲江县| 天门市| 余庆县| 常德市| 色达县| 信丰县| 赤壁市| 东宁县| 青州市|