首页 > 其他分享 >priority_queue自定义比较函数的两种方法

priority_queue自定义比较函数的两种方法

时间:2023-05-30 15:46:29浏览次数:28  
标签:std priority ListNode 自定义 val int next queue num

 1 #include <iostream>
 2 #include <vector>
 3 #include <queue>
 4 using namespace std;
 5 int main() {
 6     struct ListNode {
 7         int val;
 8         ListNode* next;
 9         ListNode() : val(0), next(nullptr) {}
10         ListNode(int x) : val(x), next(nullptr) {}
11         ListNode(int x, ListNode* next) : val(x), next(next) {}
12     };
13 
14     struct {
15         bool operator()(ListNode* a, ListNode* b)
16         {
17             return a->val > b->val;
18         }
19     } cmp1;
20 
21     auto cmp2 = [](ListNode* a, ListNode* b)
22     {
23         return a->val > b->val;
24     };
25 
26     priority_queue< ListNode*, vector< ListNode*>, decltype(cmp1)> pqClass;
27     priority_queue< ListNode*, vector< ListNode*>, decltype(cmp2)> pqLamda{ cmp2 };
28     std::vector<int> numbers = { 9, 5, 7, 1, 3 };
29     for (int num : numbers) {
30         std::cout << num << " ";
31         pqClass.push(new ListNode(num));
32     }
33     std::cout << std::endl;
34     while (!pqClass.empty()) {
35         std::cout << pqClass.top()->val << " ";
36         pqClass.pop();
37     }
38     std::cout << std::endl;
39 
40     priority_queue<int> pqDefaut;
41     for (int num : numbers) {
42         pqDefaut.push(num);
43     }
44     while (!pqDefaut.empty()) {
45         std::cout << pqDefaut.top()<< " ";
46         pqDefaut.pop();
47     }
48     std::cout << std::endl;
49 
50     priority_queue<int, vector<int>, greater<int>> pqGreater;
51     for (int num : numbers) {
52         pqGreater.push(num);
53     }
54     while (!pqGreater.empty()) {
55         std::cout << pqGreater.top() << " ";
56         pqGreater.pop();
57     }
58     std::cout << std::endl;
59     
60     return 0;
61 }

 

标签:std,priority,ListNode,自定义,val,int,next,queue,num
From: https://www.cnblogs.com/ret0/p/17443405.html

相关文章

  • Priority(优先级)
    Priority(优先级)是一个表示日志消息重要程度或级别的枚举类型。在不同的日志系统或应用程序中,该枚举类型的名称、值和含义可能会有所不同。下面是一个常见的优先级枚举示例:publicenumPriority{DEBUG,//调试信息INFO,//信息性消息NOTICE,//一般......
  • vscode 自定义代码字体颜色,局部变量、全局变量、函数、宏、属性
    vscode自定义代码字体与颜色风格在setting.json中修改即可:在这里插入图片描述"editor.semanticTokenColorCustomizations":{       "enabled":true,//enableforallthemes       "rules":{           "*.static":{             ......
  • 自定义表单设计器助您随心所欲定制专属表格!
    在新的发展时代,传统的表格设计器已经无法满足日愈繁杂的办公需求。那么,如何来定制专属的办公表格?其实,这也不是一件难事,只需要了解自定义表单设计器就行。在快速发展的现代化社会中,低代码开发平台也迎来了蓬勃的发展商机,它的灵活、简便和易操作等优势在无数行业办公领域深受喜爱,也......
  • 12)自定义函数
     1、创建自定义函数语法:createfunction函数名(参数1,参数2,...)returns返回值数据类型begin函数体return语句;end;要注意:1)、自定义函数是数据库的对象,创建时,需要指定该函数属于哪个数据库;2)、同一个数据库内,自定义函数不能和已有的函数名重名;3)、函数必须......
  • jwt原理,jwt开发流程,drf-jwt快速使用,drf-jwt定制返回格式,drf-jwt自定义用户表签发,drf-j
    jwt原理:  JWT就是一段字符串,由三段信息构成的,将这三段信息文本用.链接一起就构成了Jwt字符串1headerjwt的头部承载两部分信息:声明类型,这里是jwt声明加密的算法通常直接使用HMACSHA256公司信息......
  • jwt原理开发,drf-jwt快速使用和自定义使用,jwt签发认证源码分析
    一眼弄懂cookieSeesiontoken区别彻底弄懂cookie,session和token区别1jwt原理1.1使用jwt认证和使用session认证的区别1.2三段式eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEf......
  • 自定义注解时常用注解
    @Target@Target:注解的作用目标@Target(ElementType.TYPE)——接口、类、枚举、注解@Target(ElementType.FIELD)——字段、枚举的常量@Target(ElementType.METHOD)——方法@Target(ElementType.PARAMETER)——方法参数@Target(ElementType.CONSTRUCTOR)——构造函数@Target(Eleme......
  • Hive的用户自定义函数实现步骤与流程
    参考答案:1、如何构建UDF?用户创建的UDF使用过程如下:第一步:继承UDF或者UDAF或者UDTF,实现特定的方法;第二步:将写好的类打包为jar,如hivefirst.jar;第三步:进入到Hive外壳环境中,利用addjar/home/hadoop/hivefirst.jar注册该jar文件;第四步:为该类起一个别名,createtemporaryfunctionmylen......
  • Java并发编程之ConcurrentLinkedQueue详解
    简介在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循......
  • Flask010_自定义过滤器
    在模板中,通过过滤器实现对变量的处理。过滤器本质上是Python的函数,它会把被过滤器的值当作第1个参数传送给函数。自定义过滤器定义1defdatetime_format(value,format="%Y-%m-%d%H:%M"):2returnvalue.strftime(format)345app.add_template_filter(date......