一、按 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,参见:https://www.cnblogs.com/SZxiaochun/p/10482964.html

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<float, SIndexData, greater_equal<float> > 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<float, SIndexData, greater_equal<float> >::iterator iter = m_is.find(sIndexData3.f1);
if (iter != m_is.end())
{
cout << "find succ" << endl;
}
else
{
cout << "find error" << endl;
} getchar();

原因分析参见:https://www.cnblogs.com/Harley-Quinn/p/7247978.html

二、按 value 排序

typedef pair<int, string> 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<int,string> m_two; m_two[1] = "xiaochun";
m_two.insert(make_pair(2,"chunxiao")); vector<PAIR> vPair;
vPair.insert(vPair.end(), m_two.begin(), m_two.end()); sort(vPair.begin(), vPair.end(), CmpByValue);

  

map正序、逆序排序的更多相关文章

  1. C#数组的排序(正序逆序)

    C#数组的排序(正序逆序) 这种排序 超级简单的 ! using System; using System.Collections.Generic; using System.Linq; using ...

  2. oracle 正序 逆序 排序查询

    正序:从小到大 order by t.id asc 逆序:从大到小 order by t.id desc

  3. c - 逆序/正序输出每位.

    #include <stdio.h> #include <math.h> /* 判断一个正整数的位数,并按正序,逆序输出他们的位. */ int invert(int); vo ...

  4. Comparable 接口学习:对对象List进行比较和排序(正序和逆序)

    Comparable 接口只有一个 int compareTo(T o) 方法 1.int compareTo(T o) 方法 方法说明: 比较此对象和规定的对象,如果此对象大于,等于,小于规定对象, ...

  5. Java之选择排序(正序、逆序)

    public class SelectSort { public static void main(String[] args) { /** * @author JadeXu * @// TODO: ...

  6. C++ 排序函数 sort(),qsort()的含义与用法 ,字符串string 的逆序排序等

    上学时我们很多学了很多种排序算法,不过在c++stl中也封装了sort等函数,头文件是#include <algorithm> 函数名 功能描述 sort 对给定区间所有元素进行排序 st ...

  7. 链表的创建、测长、排序、插入、逆序的实现(C语言)

    #include <stdio.h> #define END_elem 0 struct node { int date; struct node * next; }; //链表创建 no ...

  8. C语言链表全操作(增,删,改,查,逆序,递增排序,递减排序,链式队列,链式栈)

    一,数据结构——链表全操作: 链表形式: 其中,每个节点(Node)是一个结构体,这个结构体包含数据域,指针域,数据域用来存放数据,指针域则用来指向下一个节点: 特别说明:对于单链表,每个节点(Nod ...

  9. 【变态需求】bootstrapTable列排序-选择正序倒序不排序

    产品经理:那个table排序能不能点击后弹个选项选择正序倒序不排序? -- 那个是bootstrapTable的插件!不支持!改不了!! 注意:数据上假的,效果看http请求参数进行脑补 这是boot ...

随机推荐

  1. c#的SortedList使用方法

    表示键/值对的集合,这些键和值按键排序并可按照键和索引访问. SortedList最合适对一列健/值对 进行排序,在排序时,是对键进行排序,SortedList 是 Hashtable 和 Array ...

  2. 分享Memcached shell启动停止脚本

    注意:要使用这个shell,必须先成功建立memcache环境 1>建立memcached文件和权限 [root@luozhonghua ~]# touch /etc/init.d/memcac ...

  3. [na][tools]tcp/udp连通性测试

    一 端口连通性测试意义 目的端可以使用nc来临时开一个端口,客户端用telnet来连接测试 测试网络端口可达性,确保给某些使用特定端口的app做链路连通性检测.使它们能够正常的运行起来. 二 测试方法 ...

  4. 并行开发系列 Plinq等

    http://www.cnblogs.com/huangxincheng/archive/2012/04/03/2430638.html

  5. Java 如何实现线程间通信

    正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点: thread.join(), object. ...

  6. 利用U盘进行软件加密的方法

    利用U盘进行软件加密的方法 一般的U盘不具备加密的功能,虽然U盘和加密狗外形有一些相似,但是内部完全不一样的,U盘只是一个存储器芯片和简单的附属电路,而现在的智能卡加密狗都具有一个单独的CPU或者加密 ...

  7. ny214 单调递增子序列(二) 动态规划

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序 ...

  8. Windows进程间各种通信方式浅谈

    1 Windows进程间通信的各种方法 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系 ...

  9. ES6新特性概览1

    本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...

  10. Servlet入门(第一个Servlet的Web程序)

    新建maven项目,注意项目的类型 project名为ServletExample 点击Finish.建立maven项目完毕例如以下 生成后的文件夹没有java源代码文件夹.依照maven的约定,还要 ...