sort自定义排序函数tips【C++】
1、读txt文件
#include<fstream>
fstream file("log.txt");//读入文件流
2、sort自定义排序
#include <algorithm>
sort(first,last,cmp);//分别代表起点、终点、排序方式!!!
对[first,last)(一定要注意这里的区间是左闭又开)区间内数据根据cmp的方式进行排序。也可以不写第三个参数,此时按默认排序,从小到大进行排序。
2.1 sort自定义排序
bool cmp(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;//年龄相同时,按姓名小到大排else return s1.age > s2.age; //从年龄大到小排序
}sort(a,a+n);
排序类例题:
解题思路:重定义排序函数+打表定义封闭图形大小
#include <iostream>
#include <algorithm>
using namespace std;
int n, a[200001];
int num[10]{1, 0, 0, 0, 1, 0, 1, 0, 2, 1};//表
int sum(int x)//拆位计算
{int ans = 0;while (x){ans += num[x % 10];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[i];sort(a + 1, a + n + 1, cmp);for (int i = 1; i <= n; i++) cout << a[i] << ' ';return 0;
}