List容器练习 排序案例

news/2024/5/19 23:58:22 标签: 快速排序, c++, list

要求:将Person自定义数据类型进行排序,Person中有姓名,年龄,身高

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

源码

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

class Person
{
public:
	Person(string name,int age,int height):m_Name(name),m_Age(age),m_Height(height){} 
	string m_Name;//姓名
	int m_Age;//年龄
	int m_Height;//身高	
};
//指定排序规则
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 test() 
{
	list<Person>L;//创建容器
	//准备数据
	Person p1("小一",27,160); 
	Person p2("小二",25,192);
	Person p3("小三",18,188);
	Person p4("小四",11,178);
	Person p5("小五",18,148);
	Person p6("小六",18,159);
	//插入数据
	L.push_back(p1); 
	L.push_back(p2);
	L.push_back(p3);
	L.push_back(p4);
	L.push_back(p5);
	L.push_back(p6);
	//打印
	cout << "排序前" << endl; 
	for(list<Person>::iterator it = L.begin(); it != L.end(); it++)
	{
		cout << "姓名: " << (*it).m_Name << " 年龄:" << it->m_Age << " 身高: " << it->m_Height << endl;	
	}
	cout << "排序后" << endl;
	L.sort(comparePerson);	
	for(list<Person>::iterator it = L.begin(); it != L.end(); it++)
	{
		cout << "姓名: " << (*it).m_Name << " 年龄:" << it->m_Age << " 身高: " << it->m_Height << endl;	
	} 
}
 

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

http://www.niftyadmin.cn/n/1026833.html

相关文章

STL常用容器之 list

STL常用容器之 list 文章目录STL常用容器之 list1. list容器1. list容器的基本概念2. list 构造函数3. list 赋值和交换4. list 大小操作5. list 插入和删除6. list 数据存取7. list 反转和排序8. 排序案例1. list容器 1. list容器的基本概念 功能&#xff1a;将数据进行链式…

STL常用容器之 set multiset

STL常用容器之 set multiset 文章目录STL常用容器之 set multiset1. set multiset容器1. set基本概念2. set构造和赋值3. set大小和交换4. set插入和删除5. set查找和统计6. set和multiset区别7. pair对组创建8. set容器排序1. set multiset容器 1. set基本概念 所有元素插入…

stm32时钟初始化分析

之前在系统应用中都是直接用的void SystemInit (void)函数进行系统时钟的初始化&#xff0c;从来没有考虑怎样进行时钟初始化的细节&#xff0c;但是突然硬件时钟无法起振了&#xff0c;所以才考虑利用系统内部&#xff0c;stm32内部提供了一个8M的内部时钟&#xff0c;不是很准…

STL常用容器之 map multimap

STL常用容器之 map multimap 文章目录STL常用容器之 map multimap1. map multimap容器1. map 基本概念2. map 构造和赋值3. map 大小和交换4. map 插入和删除5. map 查找和统计6. map 容器排序1. map multimap容器 1. map 基本概念 简介&#xff1a; map中所有元素都是pairp…

动态Mesh Tunnel组介绍

动态Mesh Tunne组定义 在传输网中&#xff0c;在边缘路由器&#xff08;edge PE&#xff09;与核心路由器&#xff08;core PE&#xff09;之间通常需要建立LSP连接&#xff0c;动态Mesh Tunne组可以自动创建所有PE路由器之间的Mesh LSP连接&#xff0c;从而减少繁杂的配置步骤…

容器(vector与multimap)案例 - 员工分组

容器&#xff08;vector与multimap&#xff09;案例 - 员工分组 案例描述&#xff1a; 公司招聘了10个员工&#xff08;ABCEDEFGJHIJ&#xff09;&#xff0c;员工进入公司后&#xff0c;需要指派员工在哪个部门工作员工信息有&#xff1a;姓名 工资&#xff1b;部门分为&…

STL - 函数对象(仿函数)

STL - 函数对象&#xff08;仿函数&#xff09; 文章目录STL - 函数对象&#xff08;仿函数&#xff09;1. 函数对象1. 函数对象概念2. 函数对象使用2. 谓词1. 谓词概念2. 一元谓词3. 二元谓词3. 内建函数对象1. 内建函数对象意义2. 算术仿函数3. 关系仿函数4. 逻辑仿函数1. 函…

关于Javascript判断变量是否为空

如何判断Javascript对象是否存在 原文网址&#xff1a;http://www.ruanyifeng.com/blog/2011/05/how_to_judge_the_existence_of_a_global_object_in_javascript.html作者&#xff1a; 阮一峰 日期&#xff1a; 2011年5月13日 Javascript语言的设计不够严谨&#xff0c;很多地方…