stl中map自定义比较函数

本文介绍STL中Map的两种自定义比较方法:通过重载小于运算符及使用仿函数实现。示例代码展示了如何按年龄排序Map中的元素。

stl中map自定义比较函数

标签: stl中map自定义比较函数
  757人阅读  评论(0)  收藏  举报
  分类:

目录(?)[+]

在stl中自定义map比较函数有两种方式,方式一在类中重载<操作符,方式二仿比较函数

1、方式一:重载<操作符

[cpp]  view plain  copy
  1. #include "stdafx.h"  
  2. #include <map>  
  3. #include <string>  
  4. #include <iostream>  
  5. using namespace std;  
  6.   
  7. class Key  
  8. {  
  9. public:  
  10.     Key(string name, int age)  
  11.     {  
  12.         this->name=name;  
  13.         this->age=age;  
  14.     }  
  15.     ~Key(){}  
  16.     string getName()  
  17.     {  
  18.         return name;  
  19.     }  
  20.     int getAge()  
  21.     {  
  22.         return age;  
  23.     }  
  24.     bool operator<(const Key& key) const  
  25.     {  
  26.         if(age!=key.age)  
  27.         {  
  28.             return age<key.age;   
  29.         }  
  30.         else  
  31.         {  
  32.             return false;  
  33.         }  
  34.     }  
  35. private:  
  36.     string name;  
  37.     int age;  
  38. };  
  39.   
  40. int main(void)  
  41. {  
  42.     Key key1("cjc",25);  
  43.     Key key2("ldb",26);  
  44.     Key key3("jzm",27);  
  45.   
  46.     map<Key,string> s;  
  47.     s[key1]="He is a boy.";  
  48.     s[key2]="He is a student.";  
  49.     s[key3]="He is a old man.";  
  50.   
  51.     map<Key,string>::iterator it=s.begin();  
  52.     while(it!=s.end())  
  53.     {  
  54.         cout<<"Name : "<<((Key)it->first).getName()<<endl;  
  55.         cout<<"Age : "<<((Key)it->first).getAge()<<endl;  
  56.         cout<<"Desc : "<<it->second<<endl;  
  57.         cout<<"--------------------------------------"<<endl;  
  58.         it++;  
  59.     }  
  60.   
  61.     system("pause");  
  62.     return 0;  
  63. }  


2、方式二:仿比较函数

[cpp]  view plain  copy
  1. #include "stdafx.h"  
  2. #include <map>  
  3. #include <string>  
  4. #include <iostream>  
  5. using namespace std;  
  6.   
  7. typedef struct key  
  8. {  
  9.     string name;  
  10.     int age;  
  11. }Key;  
  12.   
  13. struct cmpKey  
  14. {  
  15.     bool operator()(const Key& key1, const Key& key2)  
  16.     {  
  17.         if(key1.age!=key2.age)  
  18.         {  
  19.             return key1.age<key2.age;  
  20.         }  
  21.         else  
  22.         {  
  23.             return false;  
  24.         }  
  25.     }  
  26. };  
  27.   
  28. int _tmain(int argc, _TCHAR* argv[])  
  29. {  
  30.     map<Key,string,cmpKey> s;  
  31.   
  32.     Key key1,key2,key3;  
  33.       
  34.     key1.age=24;  
  35.     key1.name="cjc";  
  36.     s[key1]="He is a boy!";  
  37.   
  38.     key2.age=24;  
  39.     key2.name="ldb";  
  40.     s[key2]="He is a student!";  
  41.   
  42.     key3.age=26;  
  43.     key3.name="jzm";  
  44.     s[key3]="He is an old man!";  
  45.   
  46.     map<Key,string,cmpKey>::iterator it=s.begin();  
  47.     while(it!=s.end())  
  48.     {  
  49.         cout<<"Age : "<<it->first.age<<endl;  
  50.         cout<<"Name : "<<it->first.name<<endl;  
  51.         cout<<"Desc : "<<it->second<<endl;  
  52.         cout<<"---------------------------------"<<endl;  
  53.         it++;  
  54.     }  
  55.   
  56.     system("pause");  
  57.     return 0;  
  58. }  
内容概要:本文围绕基于CNN-Transformer混合模型的锂电池SOH(State of Health,健康状态)预测估计展开研究,提出一种融合卷积神经网络(CNN)与Transformer架构的深度学习方法,用于精准建模电池容量衰退过程。该方法充分发挥CNN在局部特征提取方面的优势以及Transformer在捕捉长时间序列依赖关系上的强大能力,有效提升了锂电池健康状态预测的准确性与稳定性。研究内容涵盖数据预处理、模型结构设计、训练优化流程及预测结果可视化等关键环节,适用于电池退化趋势分析与剩余使用寿命(RUL)评估,具有较强的工程应用价值。; 适合人群:具备Python编程能力和深度学习理论基础的高校研究生、科研人员及从事新能源电池管理系统开发的工程技术人才,特别适合聚焦于锂电池寿命预测、故障诊断与健康管理等方向的研究者。; 使用场景及目标:①掌握CNN与Transformer在时间序列回归任务中的协同建模机制;②实现高精度锂电池SOH预测模型构建与训练;③服务于电动汽车续航管理、储能系统运维决策与电池老化特性分析;④支持学术论文复现、科研项目验证及工业级电池管理算法开发。; 阅读建议:此资源以代码实践为核心驱动,建议读者结合所提供的完整Python代码进行动手实现,深入理解模型各模块的设计逻辑与训练技巧,并可通过调整网络结构或引入新数据集进一步拓展至其他时序预测任务中。
我们把同一标的(昆仑万维,现价 43.20 元,2026-07-31 收盘)交给三套系统,各出一份独立分析: **C 报告(CoordClaw 基于管理学多智能体系统)**——投研级。它由五个角色构成:周婷整合撰写、李静出基本面、王芳出技术面、赵明出风险、陈默做 PM 终审。最终产物是一份 38 项分级风险清单(P0×4 / P1×12 / P2×12 / P3×6 / 尾部×4)、双源交叉验证的财务数据(EM/Sina 差异 <0.01%)、严格的口径纪律,以及一份原样保留的"待核实"清单。结论冷冰冰:高风险,不建议参与。 **D 报告(DeepSeek)**——信息整理级。它把"4+3 AGI 战略"、天工 AI、Opera 浏览器、StarMaker 拆得很漂亮,核心财务数据(营收 81.98 亿、归母 -15.93 亿)也没算错。但整篇没有技术面、没有量化风控,更关键的是——它完全没提实控人已减持 75%、质押状态未知、净现金仅 15.19 亿且续航只有 1.26~1.81 年这些要命的负面。这是典型的"选择性呈现"。 **K 报告(Kimi)**——以对比评估的方式呈现。它搭起"数据准确性 / 分析维度 / 结论合理性"的三维框架,把几份材料放在一起对照,给出各自的强弱判定。它的维度意识比 D 报告更自觉,但作为一份独立分析,它对"评估方法本身的信度"交待不足,部分引用的核对也不够彻底。 结果两家的结论高度一致。C 报告(多智能体)被评投研级、居首;D 报告(DeepSeek 自己写的)被评信息整理级、居中;K 报告(Kimi 自己那份)维度较全但核验深度有限,排在两者之间。DeepSeek 的那份评估把 C 给了五星、D 三星、K 四星;Kimi 的那份评估也独立地把最高分给了 C。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值