日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

priority_queue(优先队列)的简单构造与用法

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 priority_queue(优先队列)的简单构造与用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??

priority_queue

  priority_queue 優先隊列,其底層是用堆來實現的。在優先隊列中,隊首元素一定是當前隊列中優先級最高的那一個。

  在優先隊列中,沒有 front() 函數與 back() 函數,而只能通過 top() 函數來訪問隊首元素(也可稱為堆頂元素),也就是優先級最高的元素。

一、基本數據類型的優先級設置

  • 此處指的基本數據類型就是 int 型,double 型,char 型等可以直接使用的數據類型,優先隊列對他們的優先級設置一般是數字大的優先級高,因此隊首元素就是優先隊列內元素最大的那個(如果是 char 型,則是字典序最大的)。
  • //下面兩種優先隊列的定義是等價的priority_queue<int> q;priority_queue<int,vector<int>,less<int> >;//后面有一個空格

      其中第二個參數( vector ),是來承載底層數據結構堆的容器,第三個參數( less ),則是一個比較類,less 表示數字大的優先級高,而 greater 表示數字小的優先級高

    如果想讓優先隊列總是把最小的元素放在隊首,只需進行如下的定義:

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

    示例代碼:

    void test1(){//默認情況下,數值大的在隊首位置(降序)priority_queue<int> q;for(int i = 0;i <= 10;i ++)q.push(i);while(!q.empty()){cout<<q.top()<<" ";q.pop();}cout<<endl;//greater<int>表示數值小的優先級越大priority_queue<int,vector<int>,greater<int> > Q;for(int i = 0;i <= 10;i ++)Q.push(i);while(!Q.empty()){cout<<Q.top()<<" ";Q.pop();}}

    二、結構體的優先級設置

    1.方式一:重載運算符 ‘<’

      可以在結構體內部重載 ‘<’,改變小于號的功能(例如把他重載為大于號)

    struct student{int grade;string name;//重載運算符,grade 值高的優先級大friend operator < (student s1,student s2){return s1.grade < s2.grade;}};

    示例代碼:

    void test2(){priority_queue<student> q;student s1,s2,s3;s1.grade = 90;s1.name = "Tom";s2.grade = 80;s2.name = "Jerry";s3.grade = 100;s3.name = "Kevin";q.push(s1);q.push(s2);q.push(s3);while(!q.empty()){cout<<q.top().name<<":"<<q.top().grade<<endl;q.pop();} }/*結果:Kevin:100Tom:90Jerry:80*/

    2.方式二:把重載的函數寫在結構體外面

      將比較函數寫在結構體外面,作為參數傳給優先隊列。

    struct fruit{string name;int price;};struct cmp{// "<" 表示 price 大的優先級高bool operator() (fruit f1,fruit f2){return f1.price < f2.price;}};

    示例代碼:

    void test3(){priority_queue<fruit,vector<fruit>,cmp> q;fruit f1,f2,f3;f1.name = "apple";f1.price = 5;f2.name = "banana";f2.price = 6;f3.name = "pear";f3.price = 7;q.push(f1);q.push(f2);q.push(f3);while(!q.empty()){cout<<q.top().name<<":"<<q.top().price<<endl;q.pop();}}/*結果:pear:7banana:6apple:5*/

    ??


    原博客鏈接:https://blog.csdn.net/pzhu_cg_csdn/article/details/79166858

    總結

    以上是生活随笔為你收集整理的priority_queue(优先队列)的简单构造与用法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美一卡二卡三卡 | 精品无码一区二区三区蜜臀 | 国产视频在线观看一区 | 黄在线免费观看 | 免费日韩一区 | 天天草av | 日日夜夜撸啊撸 | 国产成年网站 | 国产特级av | a中文在线 | 偷拍亚洲综合 | 免费成人进口网站 | 国产精品v亚洲精品v日韩精品 | 日本一区二区三区欧美 | 国产91精品高潮白浆喷水 | 亚洲午夜精品视频 | www.国产精品.com | 影音先锋每日资源 | 成年人看的视频网站 | 久久久久久免费视频 | 日韩欧美aⅴ综合网站发布 国产成人一区二区三区小说 | 色欲久久久天天天综合网 | 人妻一区二区三区在线 | 自拍视频在线观看 | av猫咪| av网站免费在线观看 | 姐姐的秘密韩剧免费观看全集中文 | 变态另类丨国产精品 | 久久精品国产精品 | 成人激情免费视频 | 明星毛片 | 亚洲狠狠婷婷综合久久久久图片 | 香蕉钻洞视频 | 在线视频观看国产 | www.射 | 欧美久久久久久久久久久久久久 | 国产成人精品一二三区 | 欧美色吊丝 | 蜜桃网站 | 久久国产91 | 国产精品不卡av | 欧美日韩免费高清一区色橹橹 | 成人在线免费观看视频 | 麻豆一级片| 久久波多野 | 伊人蕉| 成人动漫在线观看视频 | www.国产区 | 国产三级国产精品 | 激情www| 伊人涩涩| 亚洲国产情侣 | 熟女高潮一区二区三区 | 寂寞午夜影院 | 亚洲伊人影院 | 最近中文字幕av | 日韩一级影院 | 久久久久成人网 | 欧美日韩毛片 | 96在线观看 | 桃色视频| xxxx日本少妇 | 久久性色av| 久久久夜夜夜 | 亚洲free性xxxx护士白浆 | 国产精品成人无码专区 | 国产在线看一区 | 97中文字幕在线观看 | 五月天国产精品 | 中文幕无线码中文字夫妻 | 综合视频一区 | 国产男男一区二区三区 | 久久成人在线视频 | 性高跟鞋xxxxhd国产电影 | 双性受孕h堵精大肚生子 | 国产精品国产成人国产三级 | 亚洲热视频 | 成人午夜视频免费在线观看 | 国产欧美日韩综合精品 | 久久国产精品首页 | 成人在线播放视频 | 成人做爰免费视频免费看 | 少妇2做爰交换朴银狐 | 午夜精品99 | 国产大片中文字幕在线观看 | 国产精品一区在线免费观看 | 国产精欧美一区二区三区蓝颜男同 | 亚洲国产精品成人午夜在线观看 | 国产寡妇色xxⅹ交肉视频 | 中文字幕日韩欧美 | 男人天堂综合网 | 三度诱惑免费版电影在线观看 | 精品乱人伦一区二区三区 | 波多野结衣视频在线看 | av观看在线免费 | 激情小说中文字幕 | 日韩经典av | 亚洲精品高潮久久久久久久 | 亚洲黄色免费在线观看 |