博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
map正序、逆序排序
阅读量:6677 次
发布时间:2019-06-25

本文共 1933 字,大约阅读时间需要 6 分钟。

一、按 key 排序

  1.map顺序排序(小的在前,大的在后)

  map<float,string,less<float> > m_aSort;//float从小到大排序

 

  2.map逆序排序(大的在前,小的在后)

  map<float,string,greater<float> > m_aSortR;//float从大到小排序

 

   

  注:  

   用 greater_equal(less_equal) 做第三个参数来排序,map的 find 函数会失败。

   如果需要存储相同key值的 键值对,可以用multimap,参见:

struct SIndexData{	string sCode;	int iDate;	int iTime;	float f1;	SIndexData():	iDate(0),	iTime(0)	{	}	bool operator == (const SIndexData & obj) const	{		return sCode == obj.sCode && iDate == obj.iDate && iTime == obj.iTime;	}	bool operator < (const SIndexData & obj) const	{		return iDate < obj.iDate ;	}};map
> m_is;SIndexData sIndexData1;sIndexData1.sCode = "000001";sIndexData1.iDate = 20171025;sIndexData1.iTime = 94000;sIndexData1.f1 = 7.8f;m_is[sIndexData1.f1] = sIndexData1;SIndexData sIndexData2;sIndexData2.sCode = "000002";sIndexData2.iDate = 20171025;sIndexData2.iTime = 94000;sIndexData2.f1 = 7.9f;m_is[sIndexData2.f1] = sIndexData2;SIndexData sIndexData3;sIndexData3.sCode = "000004";sIndexData3.iDate = 20171025;sIndexData3.iTime = 94000;sIndexData3.f1 = 7.8f;//m_is[sIndexData3.f1] = sIndexData3;m_is.insert(make_pair(sIndexData3.f1, sIndexData3));SIndexData sIndexData4 = m_is[sIndexData3.f1];map
>::iterator iter = m_is.find(sIndexData3.f1);if (iter != m_is.end()){ cout << "find succ" << endl;}else{ cout << "find error" << endl;}getchar();

原因分析参见:

 

二、按 value 排序

typedef pair
PAIR;bool CmpByValue(const PAIR & lhs, const PAIR & rhs){ return lhs.second < rhs.second; //按 value 从小到大排序。如果 value 不是基础类型(int、short等),而是自己定义的结构体,就在结构体中重载 < 运算符(详见:http://www.cnblogs.com/SZxiaochun/p/6377084.html 第41行)。}map
m_two;m_two[1] = "xiaochun";m_two.insert(make_pair(2,"chunxiao")); vector
vPair;vPair.insert(vPair.end(), m_two.begin(), m_two.end());sort(vPair.begin(), vPair.end(), CmpByValue);

  

 

转载于:https://www.cnblogs.com/SZxiaochun/p/6377097.html

你可能感兴趣的文章
消息智能路由组件SmartRoute
查看>>
解决vdbench的打印messages日志的问题
查看>>
mysql设置远程访问
查看>>
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
查看>>
VDR 2.0安装部署
查看>>
jackjson解决 Unrecognized field
查看>>
百度ueditor 1.4.3 jsp开发版简单配置及图片上传
查看>>
git使用
查看>>
日志分析-2.发送windows日志到一个远程的rsyslog服务器上
查看>>
分析现在互联网上信息可信性的现状
查看>>
centos 安装yum网络源
查看>>
Android JSBridge的原理与实现
查看>>
基于Spring Boot + Dubbo的全链路日志追踪(一)
查看>>
002 centos 安装hadoop
查看>>
puppet on windows
查看>>
岁末说安全 详解U-Mail邮件服务器多重防护盾
查看>>
数组顺序存储二叉树
查看>>
excel導出框架
查看>>
maven 编译 run test的时候控制台输出乱码信息
查看>>
SpringMVC实现上传和下载
查看>>