c++STL容器之使用list容器对自己定义的数据类型进行排序
时间:2022-07-24
本文章向大家介绍c++STL容器之使用list容器对自己定义的数据类型进行排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
需求;有一个类,类中有姓名和年龄成员变量,现在要按姓名升序排序,在姓名相同时按名字升序排序。
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
//加入const限制只读,并使用const_iterator
class Person {
public:
Person(string name, int age) {
this->name = name;
this->age = age;
}
string name;
int age;
};
//重载左移运算符
ostream& operator<<(ostream& cout, Person& p) {
/*cout << "姓名:" << p.name << "," << "年龄:" << p.age;*/
return cout;
}
void printPerson(const list<Person>& p) {
for (list<Person>::const_iterator it = p.begin(); it != p.end(); it++) {
cout <<"姓名:"<< (*it).name << "t"<<"年龄:" <<(*it).age<< endl;
}
}
bool myCompare(Person &p1, Person &p2) {
//若年龄相同
if (p1.age == p2.age) {
return p1.name < p2.name;
}
return p1.age <p2.age;
}
void test() {
list<Person> lst;
Person p1("tom", 12);
Person p2("jack", 12);
Person p3("sim", 16);
Person p4("mike", 14);
Person p5("bob", 11);
Person p6("lol", 11);
lst.push_back(p1);
lst.push_back(p2);
lst.push_back(p3);
lst.push_back(p4);
lst.push_back(p5);
lst.push_back(p6);
cout << "排序前:" << endl;
printPerson(lst);
lst.sort(myCompare);
cout << "排序后:" << endl;
printPerson(lst);
}
int main() {
test();
system("pause");
return 0;
}
輸出:
可以发现年龄已按升序排列,同时在年龄相同时,名字也是按首字母的顺序按升序排列。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 从 0 到 1 搭建技术中台之 iOS 可视化埋点实践
- 超给力,一键生成数据库文档-数据库表结构逆向工程
- 精讲RestTemplate第6篇-文件上传下载与大文件流式下载
- 【Rust日报】2020-09-12 Apple 使用 Rust 进行底层编程
- 精讲RestTemplate第4篇-POST请求方法使用详解
- 精讲RestTemplate第3篇-GET请求使用方法详解
- 通过JSch运行远程linux主机上的shell脚本
- 精讲RestTemplate第5篇-DELETE、PUT等请求方法使用详解
- 一个小小的签到功能,到底用MySQL还是Redis?
- 在IntelliJ IDEA中多线程并发代码的调试方法
- 使用java API进行zip递归压缩文件夹以及解压
- C#刷剑指Offer | 从上到下打印二叉树
- Java自动化测试(web自动化测试框架2 29)
- 精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证
- 【Rust日报】2020-09-14 测试数据表明, Rust 可以帮你省钱!