自定义优先队列
自定义比较结构
默认的优先队列类型,若是整型,那么我们熟悉的有小顶堆和大顶堆两种。
示例1:
priority_queue<double,vector<double>, greater<double>> myqueue; // 小顶堆
priority_queue<double,vector<double>, less<double>> myqueue; // 大顶堆
然而有些时候,当比较类型复杂时,我们需要自定义比较级。举一个例子,比如我们希望对字母以出现次数的多少从大到小排序。
字母出现次数存在一个counts数组中,priority_queue的类型为char。
示例2:
auto cmp = [&](const char& letter1, const char& letter2) {
return counts[letter1 - 'a'] < counts[letter2 - 'a'];
};
priority_queue<char, vector<char>, decltype(cmp)> queue{cmp};

浙公网安备 33010602011771号