诗林 发表于 6 天前

sort自界说排序函数tips【C++】

1、读txt文件

#include<fstream>
fstream file("log.txt");//读入文件流
2、sort自界说排序

#include <algorithm>
sort(first,last,cmp);//分别代表出发点、尽头、排序方式!!!
对,last)(肯定要注意这里的区间是左闭又开)区间内数据根据cmp的方式进行排序。也可以不写第三个参数,此时按默认排序,从小到大进行排序。
2.1 sort自界说排序

boolcmp(int a,int b)

{
    return b<a;
}

sort(a,a+n,cmp); 2.2重载比力运算符“<”

面向结构体、类、需要重载运算符
bool operator< (const Student& s1, const Student& s2)

{
      if(s1.age==s2.age)

                return s1.name <s2.name;//年龄相同时,按姓名小到大排

      elsereturn s1.age > s2.age; //从年龄大到小排序
}

sort(a,a+n);
排序类例题:
https://i-blog.csdnimg.cn/direct/57bcafa746054ff1865aa8fe6af78051.png
解题思绪:重界说排序函数+打表界说封闭图形巨细
#include <iostream>
#include <algorithm>
using namespace std;
int n, a;
int num{1, 0, 0, 0, 1, 0, 1, 0, 2, 1};//表
int sum(int x)//拆位计算
{
    int ans = 0;
    while (x)
    {
      ans += num;
      x /= 10;
    }
    return ans;
}
bool cmp (int a, int b)//cmp 自定义判断
{
    int na = sum(a), nb = sum(b);
    if (na != nb) return na < nb;
    return a < b;
}
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a;
    sort(a + 1, a + n + 1, cmp);
    for (int i = 1; i <= n; i++) cout << a << ' ';
    return 0;
}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: sort自界说排序函数tips【C++】