zoukankan      html  css  js  c++  java
  • 自定义类型的优先队列

    当优先队列不需要运用自定义类型时,直接写priority_queue<type>即可。

    不过优先队列默认是降序。如果要改成升序的话还要变成下面形式:

    priority_queue<Type, vector<Type>, greater<Type> > q;//默认是less

    但是当需要用到自定义类型(如自己定义的结构体或者pair类型等)是,需要自己写比较函数或者重载<的。(毕竟计算机不知道怎么样才算小于嘛

    那么这里就引入两种方式:

    一.比较函数(我觉得跟比较函数很像,就叫比较函数了(虽然人家是struct

    struct cmp
    {
        bool operator()(Type a, Type b)
        {
            return a.member > b.member;
        }
    };

    就像上面的代码这样写就好了(我也不知道为啥要struct,也不知道为啥要重载括号(逃

    之后调用的话需要在定义优先队列的时候调用,如下:

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

    二.重载小于号

    struct Node
    {
        int member;
        bool operator<(const Node a) const
        {
            return member < a.member;
        }
    };

    这样之后就可以跟最开始一样。定义的时候只用写个类型就可以了。

    priority_queue< Type> q;
  • 相关阅读:
    程序是怎样跑起来的 第三章
    C#4.5-4.7学习总结
    第二周学习总结
    程序是如何跑起来的 第二章
    第一章读后感
    师生关系读后感
    C#学习总结
    我与计算机
    读《程序怎样跑起来》第一章有感
    读师生关系有感
  • 原文地址:https://www.cnblogs.com/Vikyanite/p/11820666.html
Copyright © 2011-2022 走看看