美文网首页
C++ priority_queue

C++ priority_queue

作者: wxy325 | 来源:发表于2017-10-13 13:50 被阅读66次
    1. 头文件

      #include <queue>
      
    2. 自定义比较函数

      1. lambda (c++11)
        注意使用关键字decltype
        auto comp = [origin]( Point a, Point b ) {
            auto aDis = distanceSquare(a, origin);
            auto bDis = distanceSquare(b, origin);
            if (aDis == bDis) {
                if (a.x == b.x) {
                    return a.y < b.y;
                } else {
                    return a.x < b.x;
                }
            } else {
                return aDis < bDis;
            }
        };
        priority_queue<Point, vector<Point>, decltype(comp)> q(comp);
        
      2. 结构体 TBD
         struct cmp{
                bool operator() ( Point a, Point b ){
                    if( a.x== b.x ) return a.y> b.y;
                    return a.x> b.x; 
                }
        };
        priority_queue<Point, vector<Point>, cmp> q();
        
      3. 重载操作符
        struct node  
        {  
            friend bool operator< (node n1, node n2)  
            {  
                return n1.priority < n2.priority;  
            }  
            int priority;  
            int value;  
        };  
        
    3. 排列顺序
      使用<时大的内容具有较高优先级

    Reference

    http://blog.csdn.net/yuanjilai/article/details/8043157
    https://stackoverflow.com/questions/5807735/c-priority-queue-with-lambda-comparator-error

    相关文章

      网友评论

          本文标题:C++ priority_queue

          本文链接:https://www.haomeiwen.com/subject/awdzyxtx.html