C++中的优先队列实质是一种堆(最大堆或最小堆)
注意,优先队列里的默认排序less指的是递减序列,即队列头是最大的元素;greater指的是递增的序列,即队列头是最小的元素。缺省的比较函数是降序(队头最大)。
自定义比较函数可以使用自定类或者自定义结构体的方法。
自定义结构体:
struct cmp{
bool operator () (type a, type b){
return a < b; // 队头最大;
// return a > b; // 队头最小;
}
};
自定义类:
class mycomparison
{
bool reverse;
public:
mycomparison(const bool& revparam=false) {
reverse=revparam;
}
bool operator() (const int& lhs, const int&rhs) const {
if (reverse) return (lhs>rhs); // 队头最小
else return (lhs<rhs); // 队头最大;
}
};
版权声明:本文为weixin_38742280原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。