map可以实现key到value的一一映射,如果是一对多的,我们可以使用multimap

multimap<int,int>mp;

mp.insert(make_pair(first,second));

map默认是按照key值从小到大进行排序的,如果希望按照从大到小进行排序,可以使用

map<int,int,greater<int> >mp

如果我们期望按照自己定义的规则进行排序,那么可以自己写一个排序类

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
struct cmp
{
bool operator()(const string &k1,const string &k2)
{
return k1.length()<k2.length();
}
};
int main()
{
map<string,int,cmp >mp;
mp["abc"]=;
mp["a"]=;
mp["dfdsa"]=;
map<string,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++)
cout<<it->first<<" "<<it->second<<endl; }

那要如何才能实现对value的排序呢?我们想到使用sort函数,但是sort函数只能对线性的容器进行排序,所以我们需要先把map转化成一个vector。map中的元素是一个pair

#include<iostream>
#include<cstdio>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
typedef pair<string,int>PAIR;
bool cmp1(const PAIR &k1,const PAIR &k2)
{
return k1.second>k2.second;
}
struct cmp
{
bool operator()(const PAIR &k1,const PAIR &k2)
{
return k1.second>k2.second;
}
};
int main()
{
map<string,int>mp;
mp["abc"]=;
mp["a"]=;
mp["dfdsa"]=;
vector<PAIR> v(mp.begin(),mp.end());
//sort(v.begin(),v.end(),cmp());
sort(v.begin(),v.end(),cmp1);
for(int i=;i<v.size();i++)
cout<< v[i].first<<" "<<v[i].second <<endl; }

map按照value值排序的更多相关文章

  1. Map<String, String> map按key值排序

    private static String buildMd5Params(Map<String, String> map) { StringBuilder result = new Str ...

  2. C++ map排序(按照value值排序)_glp_hit_新浪博客

    C++ map排序(按照value值排序)_glp_hit_新浪博客     C++ map排序(按照value值排序)    (2012-07-12 14:19:51)    转载▼    标签:  ...

  3. 160725、Java Map按键排序和按值排序

    按键排序(sort by key) jdk内置的Java.util包下的TreeMap<K,V>既可满足此类需求,原理很简单,其重载的构造器之一 有一个参数,该参数接受一个比较器,比较器定 ...

  4. STL map 按key值和按value值排序

    map是用来存放<key, value>键值对的数据结构,能够非常方便高速的依据key查到对应的value. 假如存储水果和其单位价格.我们用map来进行存储就是个不错的选择. 我们这样定 ...

  5. Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序

    在上一讲中, 我们着重的讲了表达式的一些基础知识和基本的使用, 今天我们来实战一把, 对Map的Value值排序进行简化. 在以前的思路我们的做法如下: /** * * Map根据value排序; * ...

  6. C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客

    C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客 C++中实现对map按照value值进行排序 2012-03-15 15:32:36 标签:map 职场 休闲 排 ...

  7. java -- 对Map按键排序、按值排序

                             java  -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码  ↓ public Map<String, Str ...

  8. Java中Map根据键值(key)或者值(value)进行排序实现

    我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...

  9. 搜狗面试的经典题(C++map按值排序,class struct的差别)

    一:起因 (1)java  Map排序(key,value).请看还有一篇博客 java Map排序 (2)c++ map排序(key,value),能够对c++ map和java Map进行对照:之 ...

随机推荐

  1. web 在线聊天的基本实现

    参考:https://www.cnblogs.com/guoke-jsp/p/6047496.html

  2. javascrpt基础入门

    JavaScript 是一门脚本语言,同HTML语言一样,需要浏览器或者JavaScript解释器,解释执行. 1. 第一个JavaScript程序: <html> <body> ...

  3. container_of使用小结

    先上演示代码 #include <stdio.h> #include <stdlib.h> /* offsetof example */ #include <stddef ...

  4. charles抓包的安装,使用说明以及常见问题解决(windows)

    charles抓包的安装,使用说明以及常见问题解决(windows) https://blog.csdn.net/zhangxiang_1102/article/details/77855548

  5. VC编译错误,把类误认为是函数

    这段代码是在一个动态库中,我像把这个类导出,于是加上 SC_EXPORTS 宏.class SC_EXPORTS CProtocolCheck{public: CProtocolCheck(void) ...

  6. mysql innodb count(*)速度慢且不准确的解决办法

    innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据.而innodb必须 ...

  7. easyui datagrid取消点击行的选中事件

    http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=material&dir=ltr&pitem= ...

  8. SSL 链接安全协议的enum

    摘自:https://blog.csdn.net/lan_liang/article/details/70948221 在进行HTTPS连接时,需要指定SecurityProtocol.对于.NET ...

  9. SED命令用法整理

    sed '/Started/'q  匹配到Started字符串则退出sed命令 sed '/Started/{/in/q}'  同时匹配到Started和in两个字符时则退出sed命令 ------- ...

  10. 使用DDOS deflate抵御少量DDOS攻击

    DDoS-Deflate是一款非常小巧的防御和减轻DDoS攻击的工具,它可以通过监测netstat来跟踪来创建大量互联网连接的IP地址信息,通过APF或IPTABLES禁止或阻档这些非常IP地址. 工 ...