C++中的priority_queue
这里有一个非常容易误解的地方,greater表示数字小的优先级高,less表示数字大的优先级高。
下面直接看代码
less
priority_queue<int, vector<int>, less<int> > lessQ;
lessQ.push(1);
lessQ.push(2);
lessQ.push(3);
int sizeL = lessQ.size();
for(int i=0;i<sizeL;i++) {
cout<<lessQ.top()<<" ";
lessQ.pop();
}
输出
3 2 1
greater
priority_queue<int, vector<int>, greater<int> > greaterQ;
greaterQ.push(1);
greaterQ.push(2);
greaterQ.push(3);
int sizeG = greaterQ.size();
for(int i=0;i<sizeG;i++) {
cout<<greaterQ.top()<<" ";
greaterQ.pop();
}
输出
1 2 3
如上图所示,应该可以很清楚的看出,less构建的是大顶堆,greater构建的是小顶堆。