闲话
用priority_queue的时候,不知道写出来的cmp对象与自己要的有限序列关系,于是做了个小实验。
实验
代码
#include <queue>
#include <iostream>
using namespace std;
struct cmp {
bool operator()(int i, int j) {return i < j;}
};
int main() {
priority_queue<int, vector<int>, cmp> q;
for (int i = 0; i < 5; i++) {q.push(i);}
for (int i = 0; i < 5; i++) {cout << q.top() << ' '; q.pop();}
return 0;
}
我们发现,当cmp对象return i < j;
的时候,大的数值优先。
将cmp对象中的return i < j;
改为return i > j
,重复实验。发现小的数值优先。
结论
要大的数值优先:return i < j;
要小的数值优先:return i > j;