算法笔记-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而出错
*/

猜你喜欢

转载自blog.csdn.net/weixin_42127158/article/details/82017003
6.6