我的 priority_queue 是倒序排列的,我不明白为什么。这是来自cplusplus.com
表达式 comp(a,b),其中 comp 是这种类型的对象,a 和 b 是容器中的元素,如果在函数定义的严格弱排序中认为 a 在 b 之前,则应返回true 。
现在在我的 Comparator 的类 operator() 函数中,如果 a 小于 b,a 应该在 b 之前。因此,如果 a 小于 b,我返回 true。但是最后我得到了序列“321”,但我期望的是“123”!
#include <iostream>
#include <queue>
using namespace std;
class Number{
int x;
public:
Number(int _x):x(_x){}
int getX()const{return x;}
};
class Comparator{
public:
bool operator()(const Number& a,const Number& b){
if (a.getX()<b.getX()){
return true;
} else {
return false;
}
}
};
int main(){
priority_queue<Number,vector<Number>,Comparator> pq;
pq.push(2);
pq.push(1);
pq.push(3);
while (!pq.empty()){
cout<<pq.top().getX();
pq.pop();
}
return 0;
}