zoukankan      html  css  js  c++  java
  • sort自定义cmp函数

    1.改写comp从大到小排序。

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    bool comp(const int &a,const int &b)
    {
        return a>b;
    }
    int main()
    {
        vector<int>v;
        v.push_back(13);
        v.push_back(23);
        v.push_back(03);
        v.push_back(233);
        v.push_back(113);
        sort(v.begin(),v.end(),comp);//
        int i=0;
        for(i=0;i<5;i++)
        {
            cout<<v[i]<<endl;
        }
        system("pause");
        return 0;
    }
    

      

    运行结果:

    233 
    113 
    23 
    13 

    什么会这样呢?比较时sort函数根据comp函数进行判断输的大小,系统默认

    2.对结构体排序

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    struct ss
    {
        int a,b;
    };
    bool comp(const ss &a,const ss &b)
    {
        return a.a<b.a;
    }
    int main()
    {
        vector<ss>v;
        ss s1,s2,s3,s4,s5;
        s1.a=4;s1.b=23;
        s2.a=1;s2.b=213;
        s3.a=2;s3.b=231;
        s4.a=5;s4.b=123;
        s5.a=3;s5.b=223;
        v.push_back(s1);
        v.push_back(s2);
        v.push_back(s3);
        v.push_back(s4);
        v.push_back(s5);
        sort(v.begin(),v.end(),comp);
        int i=0;
        for(i=0;i<5;i++)
        {
            cout<<v[i].a<<" "<<v[i].b<<endl;
        }
        system("pause");
        return 0;
    }

    比如ss结构体中a代表的是索引号,b代表的是索引对应的值,那么我想按索引排序,通过改写comp函数即可实现。

    结果:

    1 213 
    2 231 
    3 223 
    4 23 
    5 123 
    请按任意键继续…

    方法2:

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    struct ss
    {
        int a, b;
        bool operator < (const ss &s)const{
            return a < s.a;
        }
    
    };
    int main()
    {
        vector<ss>v;
        ss s1, s2, s3, s4, s5;
        s1.a = 4; s1.b = 23;
        s2.a = 1; s2.b = 213;
        s3.a = 2; s3.b = 231;
        s4.a = 5; s4.b = 123;
        s5.a = 3; s5.b = 223;
        v.push_back(s1);
        v.push_back(s2);
        v.push_back(s3);
        v.push_back(s4);
        v.push_back(s5);
        sort(v.begin(), v.end());
        int i = 0;
        for (i = 0; i<5; i++)
        {
            cout << v[i].a << " " << v[i].b << endl;
        }
        return 0;
    }
  • 相关阅读:
    Markdown文档示例
    Python网络编程(一)
    JS之客户端检测
    MySQL 多表查询
    MySQL 单表查询
    MySQL 入门
    Python内置方法大全
    010 盒模型
    009 CSS选择器
    008 常用样式
  • 原文地址:https://www.cnblogs.com/upstart/p/8982167.html
Copyright © 2011-2022 走看看