崔学弟言:
第二版的359页那一小节可以解答你今晚的所有困惑……
然而假期没带紫书啊,幸好大半夜学弟临睡觉之前拍了几张紫书的照片,这里做点笔记
STL的优先队列也定义在头文件
自定义类型也可以组成优先队列,但必须为每个元素定义一个优先级。
例如,要想实现一个“个位数越大的整数优先级反而小”的优先队列,可以定义一个结构体cmp,重载“()”运算符,使其“看上去”想一个函数,然后用“priority_queue<int, vector
struct cmp {
bool operator() (const int a, const int b) const {//a的优先级比b小时返回true
return a % 10 > b % 10;
}
};
对于一些常见的优先队列,STL提供了更为简单的定义方法,例如,“越小的整数优先级越大的优先队列”可以写成priority_queue<int, vector
PS:
在C++中,冲在了“()”运算符的类或者结构体叫做仿函数(functor)。