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;