cpp: Sorting a List of Objects with Custom Comparator or Lambda Function using C++11
PigInfo.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | #ifndef PIGINFO_H #define PIGINFO_H #include <iostream> #include<string.h> #include<math.h> using namespace std; /* 实体类 https://learn.microsoft.com/zh-cn/cpp/standard-library/cpp-standard-library-header-files?view=msvc-170 https://learn.microsoft.com/en-us/cpp/cpp/header-files-cpp?view=msvc-170 https://btechgeeks.com/cpp-how-to-sort-a-list-of-objects-with-custom-comparator-or-lambda-function/ 排序 */ /** * @brief 猪的类的简单概述 \n(换行) * 类的详细概述 * geovindu, Geovin Du */ class PigInfo { private : /** * @brief 成员变量猪的名称 * * 成员变量PigName的详细说明,这里可以对变量进行 * 详细的说明和描述,具体方法和函数的标注是一样的 */ std::string PigName; /** * @brief 成员变量猪的重量 * * 成员变量PigName的详细说明,这里可以对变量进行 * 详细的说明和描述,具体方法和函数的标注是一样的 */ int PigWeight; public : /** * @param [string] pigName 只能输入以下参数: * -# a:代表geovindu // 生成 1. a:代表geovindu * -# b:代表Geovin Du // 生成 2. b:代表Geovin Du * -# c:代表hong // 生成 3. c:代表hong */ void SetPigName(string pigName) { PigName = pigName; } /** * @param [int] pigWeight 只能输入以下参数: * -# 1:代表公斤 // 生成 1. 1:代表公斤 * -# 2:代表吨 // 生成 2. 1:代表吨 * -# 3:代表克 // 生成 3. 1:代表克 */ void SetPigWeight( int pigWeight) { PigWeight = pigWeight; } /** * @brief 得到猪的名称 * @param [string] 参数名称 * * @retval 0 成功 * @retval -1 失败 * @pre file 必须使用的返回值 */ string getPigName() { return PigName; } /** * @brief 得到猪的重量 * @param [string] 参数名称 * * @retval 0 成功 * @retval -1 失败 * @pre file 必须使用OpenFile的返回值 */ int getPigWeight() { return PigWeight; } //构造函数 //PigInfo(string pigname, int pigweight); /** * @brief 显示猪的属性 * */ void ShowInfo(); // PigInfo( int sRoll, std::string sName) : PigWeight(sRoll), PigName(sName) { } /** * */ bool operator <( const PigInfo& pigObj) const { return PigWeight < pigObj.PigWeight; } }; /* 构造函数 PigInfo::PigInfo(string PigName, int PigWeight) { //构造函数函数体内进行赋值操作 this->PigName = PigName; this->PigWeight = PigWeight; } */ /** * @brief 显示猪的属性 方法 * Geovin Du,涂聚文 */ void PigInfo::ShowInfo() { cout << "小猪名称:" << this ->getPigName() << ",重量:" << this ->getPigWeight() << endl; //cout << "" << this->getPigWeight() << endl; } #endif |
调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | // cppdemo.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include<string.h> #include<math.h> #include<list> #include <algorithm> #include <vector> #include "PigInfo.h" #include "geoivndu.h" using namespace std; using namespace geovindu; class Rectangle { int width, height; public : void set_values( int , int ); int area() { return width * height; } }; void Rectangle::set_values( int x, int y) { width = x; height = y; } int main() { //std::cout << "Hello World!涂聚文\n"; /*Rectangle rect; rect.set_values(3, 4); cout << "area: " << rect.area(); */ //if 比较小猪 Geovin geovin; geovin.getPig(); //PigInfo piginfo; std::list<PigInfo> pigInfoList; ; string name; int weight; std::cout << "输入三个小猪的重量\n" ; //piginfo.SetPigName("geovindiu"); //piginfo.SetPigWeight(25); for ( int i = 1; i < 4; i++) { std::cout << "请输入第" <<i<< "只小猪的名称" << endl; cin >> name; std::cout << "请输入第" <<i<< "只小猪的重量" << endl; cin >> weight; //piginfo.SetPigName(name); //piginfo.SetPigWeight(weight); //piginfo.ShowInfo(); PigInfo piginfo(weight,name); pigInfoList.push_back(piginfo); } cout << "名称:" << "\t" << "重量:" << "\t" << endl; for ( auto info : pigInfoList) { cout << "" << info.getPigName() << "\t" <<info.getPigWeight() << endl; } int len = sizeof (pigInfoList); // / sizeof(pigInfoList[0]); //排序 pigInfoList.sort(); //sort(pigInfoList, sizeof(pigInfoList)); //vector<PigInfo> v(PigInfo, size(pigInfoList)); cout << "重量排序\n名称:" << "\t" << "重量:" << "\t" << endl; for (PigInfo p:pigInfoList) { cout << "" << p.getPigName() << "\t" << p.getPigWeight() << endl; } system ( "pause" ); return 0; } // 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单 // 调试程序: F5 或调试 >“开始调试”菜单 // 入门使用技巧: // 1. 使用解决方案资源管理器窗口添加/管理文件 // 2. 使用团队资源管理器窗口连接到源代码管理 // 3. 使用输出窗口查看生成输出和其他消息 // 4. 使用错误列表窗口查看错误 // 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目 // 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件 |
输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 请输入第一只小猪pig1的重量 20 请输入第二只小猪pig2的重量 8 请输入第三只小猪pig3的重量 87 此时三只小猪的重量分别为:pig1=20,pig2=8,pig3=87, 小猪3最重,它的重量为:87 三只小猪一样重 大小排序:第三只小猪:87>第一只小猪:20>第二只小猪:8 输入三个小猪的重量 请输入第1只小猪的名称 小花 请输入第1只小猪的重量 45 请输入第2只小猪的名称 小白 请输入第2只小猪的重量 20 请输入第3只小猪的名称 小草 请输入第3只小猪的重量 880 名称: 重量: 小花 45 小白 20 小草 880 重量排序 名称: 重量: 小白 20 小花 45 小草 880 请按任意键继续. . . |
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
分类:
Cpp programming
标签:
排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!