1. 程式人生 > >演算法筆記-6.6 priority_queque用法

演算法筆記-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而出錯
*/