Вот мой код, и вместо того, чтобы писать return меньше, чем b, я на самом деле получаю числа, напечатанные в порядке максимальной кучи. Если я пишу return a>b
, я печатаю числа в порядке минимальной кучи. Почему это происходит здесь, что прямо противоположно тому, что я испытал ранее.
Может ли кто-нибудь объяснить рабочий феномен?
#include<bits/stdc++.h>
using namespace std;
struct comp
{
bool operator()(const int &a,const int &b)
{
return a< b;
}
};
int main()
{
int i,j,k,l,n,m;
priority_queue<int,vector<int>, comp> pq;
for(i=1;i<10;i++)
{
pq.push(i);
}
while(!pq.empty())
{
cout<<pq.top()<<" ";
pq.pop();
}
return 0;
}