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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++STL特殊容器priority_queue

發布時間:2023/11/30 c/c++ 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++STL特殊容器priority_queue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在了解priority_queue(優先隊列)前,可以先去瞅瞅queue,下面是傳送門啦>——<

傳送門

priority_queue的基本性能

class priority_queue<>實現出一個queue,只不過其中的元素依照優先級被讀取。priority_queue的接口與queue非常相近,只不過在插入元素后priority_queue會自動為元素排序,默認排序是operator <形成降序排列,也就是說,隊首的元素默認是最大的元素,我們在彈出元素時,就會彈出最大的那個元素。值得注意的是,如果同時存在若干個數值最大的元素,我們無法確知究竟哪一個會入選。

priority_queue使用須知

1.包含頭文件

#include<queue>

2.在頭文件<queue>中,class?priority_queue 定義如下

namespace std {template <typename T,typename Container = vector<T>typename Compare = less<typename Container::value_type>>class priority_queue; }

第一個template參數是元素類型,帶有默認值的第二個template參數定義了priority_queue內部用來存放元素的容器,默認容器為vector,帶有默認值的第三個template參數定義出“用以查找下一個最高優先級元素”的排序準則,默認以operator<作為比較標準。

但實際上,你可以用任何sequence容器支持priority_queue,只要他們支持random-access iterator和front()、push_back()、pop_back()等操作就行。由于priority_queue用到了STL heap算法,所以容器必須支持random-access。

priority_queue核心操作

1.核心接口成員函數

push() //將一個元素放入priority_queue中 top() //返回priority_queue的一個隊首元素,但是不刪除它 pop() //刪除priority_queue的一個隊首元素,但是不返回它

2.建立一個升序排序準則的priority_queue

priority_queue<int,vector<int>,greater<int> > pq; //建立一個容器為vector名為 pq 的 priority_queue

3.priority_queue的具體操作

#include<iostream> #include<queue> //必不可少的頭文件們 using namespace std; int main() {//創建一個容器為string的優先隊列priority_queue<string> pq1;//插入三個字符串pq1.push("AWSL");pq1.push("WSND");pq1.push("NMSL");//打印優先隊列cout << "priority_queue pq1:" << endl;cout << "now pq1.size is: ";cout << pq1.size() << endl;cout << "從隊首開始彈出pq1的元素" << endl;cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;pq1.pop();cout << "now pq1.size is: ";cout << pq1.size() << endl;cout << endl;//-----------------------------------//創建一個容器默認但是排序準則為升序的優先隊列priority_queue<int, vector<int>, greater<int> > pq2;//插入三個數字pq2.push(4396);pq2.push(777);pq2.push(250);//打印優先隊列cout << "priority_queue pq2:" << endl;cout << "now pq2.size is: ";cout << pq2.size() << endl;cout << "從隊首開始彈出pq2的元素" << endl;cout << pq2.top() << endl;pq2.pop();cout << pq2.top() << endl;pq2.pop();cout << pq2.top() << endl;pq2.pop();cout << "now pq2.size is: ";cout << pq2.size() << endl; }

本文留下了一個小bug,等待初學者自己去發現喲,嘻嘻嘻/*-*\

?

轉載于:https://www.cnblogs.com/cloudplankroader/p/10394252.html

總結

以上是生活随笔為你收集整理的C++STL特殊容器priority_queue的全部內容,希望文章能夠幫你解決所遇到的問題。

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