map按照value值排序
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值排序的更多相关文章
- Map<String, String> map按key值排序
private static String buildMd5Params(Map<String, String> map) { StringBuilder result = new Str ...
- C++ map排序(按照value值排序)_glp_hit_新浪博客
C++ map排序(按照value值排序)_glp_hit_新浪博客 C++ map排序(按照value值排序) (2012-07-12 14:19:51) 转载▼ 标签: ...
- 160725、Java Map按键排序和按值排序
按键排序(sort by key) jdk内置的Java.util包下的TreeMap<K,V>既可满足此类需求,原理很简单,其重载的构造器之一 有一个参数,该参数接受一个比较器,比较器定 ...
- STL map 按key值和按value值排序
map是用来存放<key, value>键值对的数据结构,能够非常方便高速的依据key查到对应的value. 假如存储水果和其单位价格.我们用map来进行存储就是个不错的选择. 我们这样定 ...
- Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序
在上一讲中, 我们着重的讲了表达式的一些基础知识和基本的使用, 今天我们来实战一把, 对Map的Value值排序进行简化. 在以前的思路我们的做法如下: /** * * Map根据value排序; * ...
- C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客
C++中实现对map按照value值进行排序 - 菜鸟变身记 - 51CTO技术博客 C++中实现对map按照value值进行排序 2012-03-15 15:32:36 标签:map 职场 休闲 排 ...
- java -- 对Map按键排序、按值排序
java -- 对Map按键.按值排序 1.按键排序(sort by key) 直接上代码 ↓ public Map<String, Str ...
- Java中Map根据键值(key)或者值(value)进行排序实现
我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...
- 搜狗面试的经典题(C++map按值排序,class struct的差别)
一:起因 (1)java Map排序(key,value).请看还有一篇博客 java Map排序 (2)c++ map排序(key,value),能够对c++ map和java Map进行对照:之 ...
随机推荐
- springboot 多环境选择
1.配置开发环境(开发环境) 2. application.yml 环境选择 3.cmd 切换环境 4. 设置环境调用方法 5. 另一方法
- day18-列表生成式、迭代器
1.列表生成式,也叫列表推导式 即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式.优点:构造简单,一行完成缺点:不能排错,不能构建复杂的数据结 ...
- ssm框架使用jsp提交表单到controller
jsp代码: controller代码:
- pod install vs pod update
Podfile文件,Podfile.lock文件 Podfile文件:指定依赖库的版本规则 Podfile.lock文件:记录当前工程中使用的依赖库的版本号 pod install会去安装podfil ...
- vue - @click 用到的修饰符
1.vue提供的方法 .stop .prevent .capture .self .once .passive <!-- 阻止单击事件继续传播 --><a v-on:click.st ...
- SIGCHLD信号
SIGCHLD的产生条件 子进程终止时 子进程接收到SIGSTOP信号停止时 子进程处在停止态,接受到SIGCONT后唤醒时 也就是说:子进程的运行状态发生变化就会发送SIGCHILD信号:这里的意思 ...
- mysql 的sleep线程过多处理方法
php程序不要使用长连接:java程序调整连接池 什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输-& ...
- Java API下载和查阅方法
使用来自API的类是简单的.只要把它当做自己写的就可以,采用import来引用,可以节省自己编程的气力~ 1.API文档下载地址 https://www.oracle.com/technetwork/ ...
- MongoDB的常规备份策略
MongoDB的备份其实算是一个基本操作,最近总是有人问起,看来很多人对这里还不太熟悉.为了避免一次又一次地重复解释,特总结成一篇博客供后来者查阅.如有不尽正确之处请指正. 1. 内建方法 1.1 复 ...
- 1.网站js文件获取
++++++++++++++++++++++ pls,input your domain like: http://111.com #coding:utf8 #encoding=utf8 import ...