priority_queue怎么用cmp
时间: 2023-08-26 11:18:49 浏览: 109
编写优先队列数据(priority_queue)
5星 · 资源好评率100%
引用中提到,priority_queue容器适配器在默认情况下使用std::less方法进行排序。如果要自定义排序规则,可以通过指定第三个模板参数Compare来实现。比如,如果要按照降序排序,可以使用std::greater作为Compare的类型。例如:
std::priority_queue<int, std::vector<int>, std::greater<int>> pq;
在上述代码中,我们创建了一个存储int类型元素的priority_queue容器适配器,并通过std::greater<int>指定了降序排序的规则。这样,当我们插入元素时,优先级最高的元素会在队列的队头。
如果想要自定义更复杂的排序规则,可以定义一个函数对象或者Lambda表达式,并将其作为Compare的类型。例如,如果要按照元素的绝对值进行排序,可以这样做:
auto cmp = [](int a, int b) { return std::abs(a) > std::abs(b); };
std::priority_queue<int, std::vector<int>, decltype(cmp)> pq(cmp);
在上述代码中,我们定义了一个Lambda表达式cmp,它比较两个整数的绝对值大小。然后,将该Lambda表达式作为Compare的类型,并传递给priority_queue容器适配器的构造函数。
总结起来,要自定义priority_queue容器适配器的排序规则,可以通过指定Compare的类型来实现,可以是函数对象、函数指针或者Lambda表达式。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [c++priority_queue详解](https://blog.csdn.net/qq_43679351/article/details/124825229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文