C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 相反顺序对的优先队列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想做这样的事情:
priority_queue< pair<int,int>,vector<int>,greater<int> > Q;

如果我正在比较的类型是int,即:

priority_queue< int,greater<int> > Q;

然而,显然,对对< int,没有办法将队列中的对与标准&gt ;.我在想我该怎么办如何实现重载>还是有另一种方式,我可以创建一个优先级队列,最小的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;

大佬总结

以上是大佬教程为你收集整理的c – 相反顺序对的优先队列全部内容,希望文章能够帮你解决c – 相反顺序对的优先队列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。