zoukankan      html  css  js  c++  java
  • priority_queue的运算符重载问题

    对于需要比较的函数或STL(最常见的为sort,priority_queue)

    要对自创的结构进行运算符重载(sort可以写cmp,一样的效果)

    1、只能对小于号重载

          cmp函数与其起到相同的作用

    2、sort:返回值为真则前后不交换

          priority_queue:与sort相反,返回值为真则前后交换

    可以通过两者默认相反来记忆

    #include <bits/stdc++.h>
    
    using namespace std;
    
    struct node
    {
        int x,y;
    };
    
    bool operator < (node a,node b)
    {
        return a.x*a.y<b.x*b.y;
    }
    
    bool cmp(node a,node b)
    {
        return a.x*a.y<b.x*b.y;
    }
    
    int main()
    {
        priority_queue<node> que;
        que.push(node{1,10});que.push(node{2,2});que.push(node{3,5});
        
        vector<node> v;
        v.push_back(node{1,10});v.push_back(node{2,2});v.push_back(node{3,5});
        sort(v.begin(),v.end());  
        //sort(v.begin(),v.end(),cmp);
        
        node a=que.top();
        cout << a.x << " " << a.y << endl;
        cout << v[0].x << " " << v[0].y;
        
        return 0;
    }

    对于上述代码,priority_queue输出   3  5

                                        sort      输出   2  2

  • 相关阅读:
    QT设置32bit 64bit编译
    windows应用程序无边框设置
    分组与聚合数据
    快速排序
    【leetcode】two sum --medium
    【leetcode】path sum--easy
    【leetcode】happy number--easy
    SQL函数
    数据库的高级设计
    c++笔试准备(二)数组全排的问题
  • 原文地址:https://www.cnblogs.com/newera/p/9055762.html
Copyright © 2011-2022 走看看