1. 优先队列的使用
-
特性:
自动排序(默认从大到小)。 -
优先队列声明基本格式:
priority_queue<结构类型> 队列名; -
最完整的声明公式(吧)形如:
priority_queue< 结构名, vector<结构名> , greater/less<结构名> > 队列名;
可以简写为priority_queue<结构名>,不过这样只能从大到小了。三个结构名请保持一致,如int,double,long long,包括结构体(struct等)。
要求是这个结构要有小于的规则——你要告诉它怎么比较大小,它才能帮你排序。
系统自带的数据结构的小于规则是显然的,对于结构体,需要通过重载运算符等方式规定,如:(greater代表升序,即从小到大,less代表降序,即从大到小,与缩减版无异。如果不想用重载小于,就新建一个结构体并重载等号,在第三项里填入这个结构体的名字。)
struct point
{
int x,y;
bool operator < (const point &p) const
{
return x*x+y*y<p.x*p.x+p.y*p.y;
//假设这是平面上的两个点,规定两个点的大小关系为距离原点的距离小者小。