演算法筆記-6.6 priority_queque用法
#include<stdio.h>
#include<queue>
using namespace std;
int main(){
priority_queue<int> q;
q.push(3);
q.push(4);
q.push(1);
printf("%d",q.top());
return 0;
}
/*
------priority_queque相當於優先順序的佇列 可以輸出優先順序高的元素-----
1.priority_queque中沒有font()函式和back()函式訪問元素
只有通過q.top()訪問隊首函式
2.q.push(x)----------->將元素x入隊
3.q.pop()------------->對首元素出隊
4.q.empty()----------->檢測是否為空 空返回false 不空返回true
5.q.size()------------>元素個數
6.priority_queque內元素的優先順序設定
1)基本資料型別(int、double、char)
方法一:priority_queque<int>q 預設數字或者字典序越大,越靠前
方法二:priority_queque<int,vector<int>,greater<int>>q;
第一個引數 根據不同的資料型別去定義
第二個引數 承接底層的資料堆,不同資料型別用vector<double>或vector<char>
第三個引數 是對第一個引數的比較類
less<int>表示數字大的優先順序大
grrater<int>表示數字小的優先順序大
2)結構體的優先順序
struct fruit(){
Sting name;int price;
friend bool operator < (fruit f1,fruit f2){
return f1.price<f2.price;//過載"<"號的作用 如果需要價格低的優先順序高 則這行寫">"號即可
}
};
7.用途:解決貪心問題,注意使用top()之前先判斷佇列是否為empty(),否則可能因為empty而出錯
*/