博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ priority_queue的使用 & Java PriorityQueue
阅读量:5875 次
发布时间:2019-06-19

本文共 904 字,大约阅读时间需要 3 分钟。

刚刚那道BST的题目,也用到了priority_queue,那是那个没有定义比较函数。

那么下面这个,就要定义比较函数。

 

它的模板声明带有三个参数,priority_queue<Type, Container, Functional>

 

struct cmp{

    bool operator() ( Node a, Node b ){
        if( a.x== b.x ) return a.y> b.y;
        
        return a.x> b.x; }
};

    priority_queue<Node, vector<Node>, cmp> q;

 

或者重载比较符号,也可以:

struct Node{

    int x, y;
    Node( int a= 0, int b= 0 ):
        x(a), y(b) {}
};

bool operator<( Node a, Node b ){

    if( a.x== b.x ) return a.y> b.y;
    return a.x> b.x; 
}

 

就不需要在类型里面定义了。

 

或者这样定义也是能达到效果的:

struct Node{

    int x, y;
    Node( int a= 0, int b= 0 ):
        x(a), y(b) {}

    friend operator<( Node a, Node b ){

    if( a.x== b.x ) return a.y> b.y;
    return a.x> b.x;

    }

};

 

http://blog.csdn.net/sraing/article/details/6256302

 

 

Java

PriorityQueue
queue = new PriorityQueue<>(1, new Comparator
(){ public int compare(Cell a, Cell b) { return a.height - b.height; } });

 

转载于:https://www.cnblogs.com/charlesblc/p/6446518.html

你可能感兴趣的文章
MySQL查询优化
查看>>
【Redis源码分析】如何在Redis中查找大key
查看>>
关于链接文件的探讨
查看>>
android app启动过程(转)
查看>>
Linux—源码包安装
查看>>
JDK8中ArrayList的工作原理剖析
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
乌克兰基辅一世遗修道院起火 现场火光照亮夜空
查看>>
[iOS 10 day by day] Day 2:线程竞态检测工具 Thread Sanitizer
查看>>
Centos/Ubuntu下安装nodejs
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
国内先进的智能移动广告聚合平台-KeyMob聚合
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
PHP - 如何打印函数调用树
查看>>
js闭包
查看>>