码迷,mamicode.com
首页 > 其他好文 > 详细

greater

时间:2019-10-04 11:23:02      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:运算符   font   算法   表示   队列   排序   tor   ash   而不是   

 

在Dijkstra算法中,d[i]越小,应该越先出队,因此需要使用自定义比较器。在STL中, 可以用greater<int>表示“大于”运算符,因此可以用priority_queue<int, vector<int>, greater<int> >q来声明一个小整数先出队的优先队列。然而,除了需要最小的d值之外,还要找到这个最 小值对应的结点编号,所以需要把d值和编号“捆绑”成一个整体放到优先队列中,使得取出 最小d值的同时也会取出对应的结点编号。

STL中的pair便是专门把两个类型捆绑到一起的。为了方便起见,用typedef pair<int,int> pii自定义一个pii类型,则priority_queue<pii, vector<pii>, greater<pii> > q就定义了一个由二元 组构成的优先队列。pair定义了它自己的排序规则——先比较第一维,相等时才比较第二 维,因此需要按(d[i],i)而不是(i,d[i])的方式组合。

 

greater

标签:运算符   font   算法   表示   队列   排序   tor   ash   而不是   

原文地址:https://www.cnblogs.com/aprincess/p/11621460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!