对一个结构体或类的数组进行排序
2013-08-09 22:13
176 查看
根据人的属性对人进行排序,之后输出结果。将每个人看成一个对象,这个对象有ACM、金钱、人品三个属性,排序优先顺序是ACM、金钱、人品。因此ACM成绩相同时比较金钱,如果金钱再相同时比较人品值。
首先我们先定义一个men对象:
men对象一共有三个成员。
比较函数:
当ACM值不等时返回a.ACM > b.ACM,如果ACM相等时返回a.Money > b.Money,如果ACM和Money值都相等则返回a.RP > b.RP。这样就实现了对一个有多个成员的结构体类型进行比较,但是比较结构体类型时一定要写比较函数。在进行完排序之后就可以对排完序的结构体数组进行输出了。cmp函数的形参类型一定要对应要排序的数据类型才可以。对应各种应用sort进行排序的程序,比较函数大体都是这样一个形式。
完整代码:
首先我们先定义一个men对象:
struct men { int ACM; int Money; int RP; };
men对象一共有三个成员。
比较函数:
bool cmp(men a, men b) { if(a.ACM != b.ACM) { return a.ACM < b.ACM; }else if(a.ACM == b.ACM ) { if(a.ACM == b.ACM && a.Money == b.Money) { return a.RP < b.RP; } return a.Money < b.Money; } }
当ACM值不等时返回a.ACM > b.ACM,如果ACM相等时返回a.Money > b.Money,如果ACM和Money值都相等则返回a.RP > b.RP。这样就实现了对一个有多个成员的结构体类型进行比较,但是比较结构体类型时一定要写比较函数。在进行完排序之后就可以对排完序的结构体数组进行输出了。cmp函数的形参类型一定要对应要排序的数据类型才可以。对应各种应用sort进行排序的程序,比较函数大体都是这样一个形式。
完整代码:
#include <algorithm>
#include <vector>
using namespace std;
struct men { int ACM; int Money; int RP; };
bool cmp(men a, men b) { if(a.ACM != b.ACM) { return a.ACM < b.ACM; }else if(a.ACM == b.ACM ) { if(a.ACM == b.ACM && a.Money == b.Money) { return a.RP < b.RP; } return a.Money < b.Money; } }
int main()
{
men a;
men b;
men c;
a.ACM = 1;
a.Money = 2;
a.RP = 4;
b.ACM = 1;
b.Money = 2;
b.RP = 3;
c.ACM = 1;
c.Money = 2;
c.RP = 5;
vector<men> vec;
vec.push_back(a);
vec.push_back(b);
vec.push_back(c);
sort(vec.begin(), vec.end(), cmp);
for(vector<men>::iterator itr = vec.begin(); itr != vec.end(); ++itr)
{
cout << (*itr).ACM << " " ;
cout << (*itr).Money << " ";
cout << (*itr).RP << endl;
}
}
相关文章推荐
- 对一个大型数组进行排序,求平均,中间数等操作,第一次写这么长代码,累~
- 对一个数组,按照给定的下标进行排序,仅使用两两交换的方式
- 仅使用一个局部变量对数组进行排序
- 程序员面试金典: 9.11 排序与查找 11.1编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置。
- js sort方法根据数组中对象的某一个属性值进行排序
- 使用JavaScript完成一个对字符串数组进行排序的小程序
- 选择排序算法---对一个数组进行选择排序
- C语言:用快速排序算法对一个数组进行排序
- 定义一个一维数组,其元素个数从键盘中输入,元素的值为[100,200]的随机整数。 (1)输出数组的每个数 (2)对数组的数进行升序排序,输出排序后的数组元素 (3)从键盘上输入一个整数,查找该整数是
- C语言冒泡排序将一个数组按照从小到大进行排序
- 合并两个数组为一个数组,并且对新数组进行排序
- C语言-对一个结构体中的字段进行排序
- C语言:用插入排序算法对一个数组进行排序
- (C语言-结构体)主函数创建5个学生的数组,写一个排序函数,让学生按姓名从小到大排序,主函数输出排序后的结果。
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序。
- C语言-对一个结构体中的字段进行排序
- java排序,随机生成一个数组,对其进行排序,偶数在前奇数在后,偶数从小到大排,奇数从大到小排
- js sort方法根据数组中对象的某一个属性值进行排序
- C++中用冒泡排序算法对一个数组中的元素进行排序
- 在PHP中,将一个汉字数组按照拼音首字母进行排序