自定义优先队列

自定义比较结构

默认的优先队列类型,若是整型,那么我们熟悉的有小顶堆和大顶堆两种。

示例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};

posted @ 2021-04-21 21:11  andymori  阅读(293)  评论(0)    收藏  举报