优先队列~~

这几天一直遇到优先队列的题目,刚开始感觉挺难的,但是后面多做了几题,发现,其实简单的说,优先队列就是对一个队列进行排序(时刻), emmm, 本人的资历较浅,可能下面所描述的有所错误,还请见谅与批评指正!

由于C++ 中 就有优先队列这个函数,所以我们直接用就行了:

STL里的优先队列:priority_queue;

如果我们想让这个队列实现从小到大排序,我们可以这样操作:

priority_queue<int, vector<int>, greater<int> > q;    // q是队列名~~

如果我们想让这个队列实现从大到小排序,我们可以这样操作:

priority_queue<int, vector<int>, less<int> > q;   // q同上!!!

其实我们也可以通过重载运算符实现从大到小的排序功能:

struct Node{
	int x,y;
	Node(int a=0, int b=0):
		x(a), y(b) {}
};
 
struct cmp{
	bool operator()(Node a, Node b){
		if(a.x == b.x)	return a.y>b.y;
		return a.x>b.x;
	}
};

priority_queue<Node,vector<Node>,cmp>q;

 

最后,我想说一下我对于优先队列作用的肤浅的认识:

当我们遇到一个问题,他需要我们一直更新最小值(当然不会是minv = min(minv, XX)那么简单啦!)

比如说,有一组数,我们需要取这组数的最小的两个数a, b,然后我们再输入一个数c,三者之和:a+b+c, 然后我们要把这个和并入数组中,然后重复上述操作~~~

我们可以发现啊,如果我们用平常做法的话,我们需要在求和之和再求这个数组(已经并入和结果)的最小的两个数,那么是不是会很麻烦? 对, 所以这里就体现出优先队列的优越性了!hhh,(语文不太好!可能没说清楚我想说的)

 

呃,如果后续我有新的体会,我会及时更新的! 欢迎批评指正!

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值