C++ 优先队列自定义比较函数

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); // 队头最大;
    }
};

你可能感兴趣的:(C++,队列)