zoukankan      html  css  js  c++  java
  • (priority_queque)优先队列容器适配器的使用

    容器适配器就是在基础的顺序容器上定义的一个新的接口。

    这里的顺序容器包括:vector,list,deque.

    priority_queque是建立在vector或deque容器上的。

    优先级队列和普通的队列操作一样。

    包括:出队,入队,读取队首元素,判断队列是否空等。

    只不过不同的是优先级队列并非先进先出,而是根据优先级出队,它会将队列中最大的元素出队。

    好像是对普通队列进行了从大到小排序后,在进行出队操作。

    队列中的元素比较规则默认是按元素的值由大到小排序。

    当然,也可以自己定义比较规则。

    如果优先队列的元素是类类型。可以重载"<"操作符,定义自己的比较规则。

    如下:

    #include <queue>

    #include <iostream>

    using namespace std;

    struct data

    {

           int id;

           bool operator<(const data& d) const

           {

                  return d.id<id;

           }

    };

    int main()

    {

           priority_queue<data> pd;

           data temp;

           temp.id = 2;

           pd.push(temp);

           temp.id = 3;

           pd.push(temp);

           while (!pd.empty())

           {

                  cout<<pd.top().id<<endl;

                  pd.pop();

           }

           return 0;

    }

    通过重新定义小于关系,改变队列出队顺序。

    如果不是类类型。可以通过重载"()"操作符的方式定义优先级。

    如下

    #include <queue>

    #include <iostream>

    using namespace std;

    struct mycmp{

           bool operator()(const int &a, const int &b)

           {

                  return a>b;

           }

    };

    int main()

    {

           priority_queue<int,vector<int>,mycmp> pq;

           pq.push(2);

           pq.push(3);

           while (!pq.empty())

           {

                  cout<<pq.top()<<endl;

                  pq.pop();

           }

           return 0;

    }

    优先级队列,我不常用,今天看到一个程序中使用,因此了解。

  • 相关阅读:
    Delphi
    delphi trayIcon控件,如何实现窗口最小化的时候到系统托盘
    delphi2010自带 TTrayIcon 托盘图标控件使用方法
    通过例子来简单了解下TProgressBar的使用。 pas文件程序如下
    ORA-12154,ORA-12560解决过程
    博客备份小工具3
    各大招聘网站信息实时查询浏览
    IE7中使用Jquery动态操作name问题
    js问题杂记
    动态sql
  • 原文地址:https://www.cnblogs.com/Open_Source/p/1904937.html
Copyright © 2011-2022 走看看