zoukankan      html  css  js  c++  java
  • 优先队列(priority_queue)

    优先队列(priority_queue),是一种被专门设计的容器,其第一个元素总是它所包含的最大的元素。

    使第一个元素总是它所包含的优先级最高的元素,这种情况类似于堆,元素可以随时插入,只能检索优先级最高的元素。

    例如,当优先队列中是int类型的数据时,则数值越大优先级越高。

    Member functionsImplementation function
    empty() 判断优先队列是否为空
    size() 返回优先队列中的元素个数
    top() 获取优先队列中优先级最高的元素
    push(x) 将元素x插入到优先队列中
    pop() 将优先级最高的元素从队列中删除

     

    优先队列的优先级重载

    优先队列,可以存放数值,也可以存放其它数据类型(包括自定义数据类型)。该容器支持查询优先级最高的元素这一操作,而优先级的高低是可以自行定义的。

    我们可以通过重载小于运算符bool operator <来实现。

    比如整数,程序默认是数值较大的元素优先级较高,我们也可以定义数值较小的元素优先级较高。又比如下面的例子,在算法竞赛中经常出现,这里定义距离值较小的node优先级较高。

    struct node {
        int dist ,loc;
        node(){}
        bool operator < (const node & a) const {
            return dist >a.dist;
        }
    };
    priority_queue <node> Q;

    上述代码起到优先级重载的作用,我们仍然可以进行top()pop()等优美的操作。

     

  • 相关阅读:
    Hive-1.2.1_05_案例操作
    Hive-1.2.1_04_DML操作
    Hive-1.2.1_03_DDL操作
    Hive-1.2.1_02_简单操作与访问方式
    Hive-1.2.1_01_安装部署
    Hadoop2.7.6_08_Federation联邦机制
    Hadoop2.7.6_07_HA高可用
    NFS服务搭建与配置
    Hadoop2.7.6_06_mapreduce参数优化
    Hadoop2.7.6_05_mapreduce-Yarn
  • 原文地址:https://www.cnblogs.com/upstart/p/6797030.html
Copyright © 2011-2022 走看看