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

打印 上一主题 下一主题

主题 1330|帖子 1330|积分 3990

1、读txt文件

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

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

  1. bool  cmp(int a,int b)
  2. {
  3.     return b<a;
  4. }
  5. sort(a,a+n,cmp);
复制代码
2.2重载比力运算符“<”

面向结构体、类、需要重载运算符
  1. bool operator< (const Student& s1, const Student& s2)
  2. {
  3.         if(s1.age==s2.age)
  4.                 return s1.name <s2.name;//年龄相同时,按姓名小到大排
  5.         else  return s1.age > s2.age; //从年龄大到小排序
  6. }
  7. sort(a,a+n);
复制代码
排序类例题:

解题思绪:重界说排序函数+打表界说封闭图形巨细
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. int n, a[200001];
  5. int num[10]{1, 0, 0, 0, 1, 0, 1, 0, 2, 1};//表
  6. int sum(int x)//拆位计算
  7. {
  8.     int ans = 0;
  9.     while (x)
  10.     {
  11.         ans += num[x % 10];
  12.         x /= 10;
  13.     }
  14.     return ans;
  15. }
  16. bool cmp (int a, int b)//cmp 自定义判断
  17. {
  18.     int na = sum(a), nb = sum(b);
  19.     if (na != nb) return na < nb;
  20.     return a < b;
  21. }
  22. int main()
  23. {
  24.     cin >> n;
  25.     for (int i = 1; i <= n; i++) cin >> a[i];
  26.     sort(a + 1, a + n + 1, cmp);
  27.     for (int i = 1; i <= n; i++) cout << a[i] << ' ';
  28.     return 0;
  29. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

诗林

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表