list容器排序案例

案例描述:将Perspn自定义数据类型进行排序,Person中属性有姓名、年龄、身高

排序规则:按照年龄进行升序,如果年龄相同按照身高进行降序

代码示例

cpp 复制代码
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
using namespace std;

class  person 
{
public:
	person(string name, int age, int height)
	{
		this->name = name;
		this->age = age;
		this->height = height;
	}
	int age;
	string name;
	int height;
};


bool  comparePerson(person &p1,person &p2)
{
	//按照年龄进行升序
	if (p1.age == p2.age)
	{
		//如果年龄相同按照身高进行降序
		return p1.height > p2.height;
	}
	else
	{
		return p1.age < p2.age;
	}
}

void print(list<person>& p)
{
	for (list<person>::iterator it = p.begin(); it != p.end(); it++)
	{
		cout << "姓名: " << it->name << " 年龄: " << it->age << " 身高: " << it->height << endl;
	}
}
int main()
{
	person p1("赵信", 85, 166);
	person p2("盖伦", 67, 157);
	person p3("天海", 67, 186);
	person p4("斯沃特", 26, 130);
	person p5("安其拉", 18, 210);
	person p6("猴子", 2, 60);
	
	list<person> Plist = {p1,p2,p3,p4,p5,p6};
	
	cout<< "排序前: "<< endl;
	print(Plist);
	Plist.sort(comparePerson);
	cout<< "-------------------"<< endl;
	cout<< "排序后: "<< endl;
	print(Plist);

	return 0;
}

编译运行

相关推荐
阿明62 分钟前
list模拟实现(简单版)【C++】
开发语言·c++·学习·list
DoomGT15 分钟前
UE5 - C++项目基础
c++·ue5·ue4·虚幻·虚幻引擎·unreal engine
Yupureki16 分钟前
从零开始的C++学习生活 1:命名空间,缺省函数,函数重载,引用,内联函数
c语言·开发语言·c++·学习·visual studio
青草地溪水旁26 分钟前
设计模式(C++)详解——策略模式(2)
c++·设计模式·策略模式
鄃鳕34 分钟前
高并发日志项目中,C++IO的使用
开发语言·c++
点云侠43 分钟前
PCL 生成缺角立方体点云
开发语言·c++·人工智能·算法·计算机视觉
9毫米的幻想1 小时前
【Linux系统】—— 程序地址空间
java·linux·c语言·jvm·c++·学习
序属秋秋秋3 小时前
《C++进阶之C++11》【异常】
c++·笔记·学习·c++11·异常·新特性
爱看书的小沐6 小时前
【小沐学GIS】基于C++瓦片地图下载工具(高德/天地图/谷歌/必应/OSM/MapBox/ArcGIS)第十三期
c++·webgl·谷歌地图·earth·osm·瓦片地图下载·mapdowloader
青草地溪水旁7 小时前
EPOLLONESHOT事件类型和ET模式有什么区别?
服务器·网络·c++·epoll