c – 相反顺序对的优先队列
发布时间:2020-12-16 05:47:09 所属栏目:百科 来源:网络整理
导读:我想做这样的事情: priority_queue pairint,int,vectorint,greaterint Q; 如果我正在比较的类型是int,即: priority_queue int,greaterint Q; 然而,显然,对对 int,没有办法将队列中的对与标准gt ;.我在想我该怎么办?如何实现重载还是有另一种方式,我可以创
我想做这样的事情:
priority_queue< pair<int,int>,vector<int>,greater<int> > Q; 如果我正在比较的类型是int,即: priority_queue< int,greater<int> > Q; 然而,显然,对对< int,没有办法将队列中的对与标准> ;.我在想我该怎么办?如何实现重载>还是有另一种方式,我可以创建一个优先级队列,最小的pair.second位于队列的顶端? 解决方法
你试了吗
typedef pair<int,int> P; priority_queue< P,vector<P>,greater<P> > Q; 这将给出正常运算符的相反顺序,对于< int,它将以最小的第二个最小的第一个连接开始. 如果你想排序最小的第一和第一(!),那么你将需要一个新的排序函子: struct Order { bool operator()(P const& a,P const& b) const { return a.second < b.second || a.second == b.second && a.first < b.first; } } 然后使用: priority_queue< P,Order > Q; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |