欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sort中对结构体排序的用法

程序员文章站 2022-07-12 16:32:29
...

转载自:https://blog.csdn.net/hewei0241/article/details/7545693

sort好用大家都知道的,废话不多说。

试过直接用数组,是会出现问题的,所以建议和容器一起用。

下面提供一种用法例子

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. using namespace std;
  6. struct Pearls
  7. {
  8. int value;
  9. int amount;
  10. };
  11. bool cmp(struct Pearls a, struct Pearls b)
  12. {
  13. if(a.value > b.value)
  14. {
  15. return true;
  16. }
  17. return false;
  18. }
  19. int main()
  20. {
  21. int te;
  22. int i;
  23. int sum;
  24. int n;
  25. vector<struct Pearls> a(101);
  26. int max;
  27. scanf(“%d”, &te);
  28. while(te–)
  29. {
  30. scanf(“%d”, &n);
  31. for(i = 0; i < n; i++)
  32. {
  33. scanf(“%d %d”, &a[i].amount, &a[i].value);
  34. }
  35. sort(a.begin(), a.end(), cmp);
  36. for(i = 0; i < n; i++)
  37. {
  38. //printf(“%d %d\n”, a[i].amount, a[i].value);
  39. }
  40. max = a[0].value;
  41. //printf(“%d\n”, max);
  42. sum = max * (a[0].amount + 10);
  43. for(i = 1; i < n; i++)
  44. {
  45. if(a[i].value * (a[i].amount + 10) > max * a[i].amount)
  46. {
  47. sum += max * a[i].amount;
  48. }
  49. else
  50. {
  51. max = a[i].value;
  52. sum += max * (a[i].amount + 10);
  53. }
  54. }
  55. printf(“%d\n”, sum);
  56. }
  57. //scanf(“%d”);

相关标签: sort 结构体