优先队列:
一般元素类型:
priority_queue<int>Q;(默认大顶堆)
priority_queue<int,vector<int>,greater<int>>Q;(小顶堆)
结构体元素类型:
struct node
{
int x,y,z;
friend bool operator <(const node &a,const node &b)
{
return a.x>b.x;(小顶)
(return a.x<b.x;大顶)
}
};
priority_queue<node>Q;
特殊要求类型:
struct cmp
{
bool operator ()(const int &a,const int &b)
{
return abs(a-3)>abs(b-3);(小顶)(反之大顶)
}
};
priority_queue<int,vector<int>,cmp>Q;
sort()(默认为升序):
bool cmp(int a,int b)
{
return a>b;(逆序)
}
struct node
{
int x,y,z;
friend bool operator <(aode a,node b)
{
return a.x<b.x; (升序,反之逆序)
}
}f[100];
sort(f,f+n,cmp);
qsort:
int cmp(const void* a,const void* b)
{
return *(int*)a-*(int*)b;(升序,反之逆序)
}
qsort(f,n,sizeof(f),cmp);
分享: