使用sort 和自定义比较函数对任意成员变量排序

本文分享如何使用C++ STL中的sort函数,结合自定义比较函数,对包含姓名、年龄、成绩的学生信息进行按不同成员变量排序的方法。通过实例代码展示在VS 2010中实现按姓名、年龄、成绩升序排序的过程。
摘要由CSDN通过智能技术生成

我在学习C++ STL部分时,一直在思考如何使用最简单的方法实现对任意乱序的学生信息,分别按照姓名、年龄、成绩进行排序,在参考了前人的经验和经过自己的整合,终于找到了十分方便的方法,在这里与大家分享和讨论。

对于STL 中的list、vector、map等均有sort函数大家并不陌生,很容易实现对单个成员变量的排序,但是如何实现对特定的成员变量按照特定的顺序排序呢?

我的样本信息为:

stu1("wang",20,3.54);

stu2("zhang",27,3.24);

stu3("zuo",33,3.76);

### 回答1: 非常欢迎您的问题!这是一个很好的编程问题。以下是函数Sort的实现代码,可以实现将输入的两个整数从小到大排序,并用指针作为函数参数: void Sort(int* x, int* y) { if (*x > *y) { int temp = *x; *x = *y; *y = temp; } } 使用示例: int main() { int a, b; printf("请输入两个整数:\n"); scanf("%d%d", &a, &b); Sort(&a, &b); // 将指向 a 和 b 的指针传递给 Sort 函数 printf("从小到大排序后的结果是:%d %d", a, b); return 0; } ### 回答2: void Sort(int *x, int *y) { int temp; if (*x > *y) { temp = *x; *x = *y; *y = temp; } } #include<stdio.h> int main() { int num1, num2; printf("请输入两个整数:"); scanf("%d %d", &num1, &num2); Sort(&num1, &num2); printf("从小到大排序后的结果为:%d %d", num1, num2); return 0; } ### 回答3: 可以通过以下方式实现将输入的两个整数从小到大排序后重新输出: ```python #include <stdio.h> void Sort(int *x, int *y) { if(*x > *y) { int temp = *x; *x = *y; *y = temp; } } int main() { int a, b; printf("请输入两个整数:"); scanf("%d %d", &a, &b); Sort(&a, &b); printf("从小到大排序后的结果为:%d %d\n", a, b); return 0; } ``` 首先,在 `main` 函数中定义两个整数变量 `a` 和 `b`。然后,使用 `scanf` 函数从键盘输入获取这两个整数的值。 接下来,调用自定义函数 `Sort`,通过指针的方式传入 `a` 和 `b` 的地址。在 `Sort` 函数中,判断 `x` 和 `y` 的值的大小关系,如果 `x` 大于 `y`,则交换它们的值,否则不需要交换。 最后,在 `main` 函数中重新输出排序后的结果,即两个整数 `a` 和 `b` 的值。 这样,就实现了将输入的两个整数从小到大排序后重新输出的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值