排序案例----将个人信息Person自定义类型进行排序

Person中的属性有姓名、年龄、身高
排序规则:按照年龄大小进行升序,如果年龄相同按照身高排序
示例:

#include<iostream>
using namespace std;
#include<list>
#include<string> 

//Person类 
class Person{
	public:
		string m_Name;  //姓名 
		int m_Age;    //年龄 
		int m_Height;  //身高 
		
		Person(string name,int age,int height){   //构造函数 
			this->m_Age = age;
			this->m_Height = height;
			this->m_Name = name;
		} 
}; 

//排序规则 
bool comparePerson(Person &p1,Person &p2){
	if(p1.m_Age==p2.m_Age){  //年龄相等按身高降序排序 
		return p1.m_Height>p2.m_Height;
	}
	else         //如果年龄不相等按照年龄升序
	    return p1.m_Age<p2.m_Age; 
}

void test01(){
    list<Person>L1;  //创建容器 
    
    //准备数据 
    Person p1("刘备",35,175);
    Person p2("曹操",45,180);
    Person p3("孙权",40,170);
    Person p4("赵云",25,190);
    Person p5("张飞",35,160);
    Person p6("关羽",35,200);
    
    //插入数据 
    L1.push_back(p1);
    L1.push_back(p2);
    L1.push_back(p3);
    L1.push_back(p4);
    L1.push_back(p5);
	L1.push_back(p6);
	
	//打印未排序前数据
	cout<<"排序前:" <<endl; 
	for(list<Person>::const_iterator it=L1.begin();it!=L1.end();it++){
		cout<<"姓名:"<<(*it).m_Name<<"  年龄:"<<(*it).m_Age<<" 身高:"<<(*it).m_Height<<endl;
	} 
	//排序后
	cout<<"-----------------------------------"<<endl;
	cout<<"排序后 : "<<endl;
	L1.sort(comparePerson);  //按照指定规则排序 
	
	//打印排序后数据	
	for(list<Person>::const_iterator it=L1.begin();it!=L1.end();it++){
		cout<<"姓名:"<<(*it).m_Name<<"  年龄:"<<(*it).m_Age<<" 身高:"<<(*it).m_Height<<endl;
	}  
} 

int main(){
    test01();
	system("pause");
	return 0; 
} 

输出样式:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值