c – 反向顺序的优先级队列

This site建议如果我想反向排序我的优先级队列,我应该使用以下代码
#include <iostream>
#include <queue>
using namespace std;

class mycomparison{
    bool reverse;
  public:
    mycomparison(const bool &revparam=false) {reverse=revparam;}
    bool operator() (const int &lhs,const int &rhs) const {
      if (reverse) return (lhs>rhs);
      else         return (lhs<rhs);
    }
};

int main (){
  int myints[]= {10,60,50,20};

  priority_queue<int,vector<int>,mycomparison(true)> first;

  return 0;
}

这困扰我:

>我必须在构造函数中指定存储类.
>我创建了一个类,其唯一目的是传递给优先级队列.

是否有更优雅或更简洁的方式对优先级队列进行反向排序?

解决方法

您无法避免指定存储容器,但可以避免编写自己的仿函数
priority_queue<int,std::greater<int> > first;

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...