```
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
using namespace std; /*按key升序*/
void test01(){
map<string,int,less<string> > map1;
map1.insert(pair<string,int>("aba",));
map1.insert(pair<string,int>("aaa",));
map1.insert(pair<string,int>("ddd",));
map1.insert(pair<string,int>("ccc",)); for(map<string,int>::iterator it=map1.begin(); it!=map1.end(); it++ ){
cout<<(*it).first<<" : "<<(*it).second<<endl;
}
}
/*按key降序*/
void test02(){
map<string,int,greater<string> > map1;
map1.insert(pair<string,int>("aba",));
map1.insert(pair<string,int>("aaa",));
map1.insert(pair<string,int>("ddd",));
map1.insert(pair<string,int>("ccc",)); for(map<string,int>::iterator it=map1.begin(); it!=map1.end(); it++ ){
cout<<(*it).first<<" : "<<(*it).second<<endl;
}
}
/*----------------------------------------------------*/
/*编写类或者结构体按key升序或者降序*/
class flag{
public:
bool operator()(string v1,string v2){
return v1<v2;
}
}; void test03(){
map<string,int,flag> map1;
map1.insert(pair<string,int>("aba",));
map1.insert(pair<string,int>("aaa",));
map1.insert(pair<string,int>("ddd",));
map1.insert(pair<string,int>("ccc",)); for(map<string,int>::iterator it=map1.begin(); it!=map1.end(); it++ ){
cout<<(*it).first<<" : "<<(*it).second<<endl;
}
}
/*-------------------------------------------------------*/
/*自定义编写类或者函数或者结构体进行值排序*/
/*自定义函数编写不用(),自定义类或者结构体需要()*/
bool flag_2(pair<string,int> o1,pair<string,int> o2){
return o1.second>o2.second;
}
class flag_2{
public:
bool operator()(pair<string,int> o1,pair<string,int> o2){
return o1.second>o2.second;
}
};
struct flag_2{
bool operator()(pair<string,int> o1,pair<string,int> o2){
return o1.second<o2.second;
}
};
void test04(){
map<string,int> map1;
map1.insert(pair<string,int>("aba",));
map1.insert(pair<string,int>("aaa",));
map1.insert(pair<string,int>("ddd",));
map1.insert(pair<string,int>("ccc",)); //利用vector进行value排序
vector< pair<string,int> > dic1(map1.begin(),map1.end());
sort(dic1.begin(),dic1.end(),flag_2()); for(int i=; i<dic1.size(); i++ ){
cout<<dic1[i].first<<" "<<dic1[i].second<<endl;
}
}
int main(){
//test01();
//test02();
//test03();
test04(); return ;
} ```

c++中map按key和value排序的更多相关文章

  1. JAVA中对List<map<String,Object>>根据map某个key值进行排序

    方法compareTo()比较此对象与指定对象的顺序.如果该对象小于.等于或大于指定对象,则分别返回负整数.零或正整数.返回整数,1,-1,0:返回1表示大于,返回-1表示小于,返回0表示相等. 普通 ...

  2. JAVA中对list map根据map某个key值进行排序

    package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; ...

  3. list中map 的value值时间排序

    public static void main(String[] args) { String sys=DateUtil.getTime().substring(0,5); System.out.pr ...

  4. map的key 为指针

    STL中map的key能否用char *呢?当然可以! 在程序中需要用到一个map,本来是这样写的,map<string, int> mapStr; 为了追求效率,把string改成了ch ...

  5. JS中map list 数组的迭代

    后台传给前台一个map 前台如何迭代呢 $.post("getSys.jhtml", function(data){ var temp = ""; $.each ...

  6. C++ STL中Map的按Key排序和按Value排序

    map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...

  7. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

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

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

  9. C++ STL中Map的按Key排序跟按Value排序

    C++ STL中Map的按Key排序和按Value排序 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定 ...

随机推荐

  1. android之官方导航栏ActionBar(三)之高仿优酷首页

    一.问题概述 通过上两篇文章,我们对如何使用ActionBar大致都已经有了认识.在实际应用中,我们更多的是定制ActionBar,那么就需要我们重写或者定义一些样式来修饰ActionBar,来满足具 ...

  2. js-变量定义关键字const,var,let

    1.var定义的变量可以修改,如果不初始化会输出undefined,不会报错. js中最常用的关键字:基本大多数据学js时都只看到使用过var.从没相关还有其他定义 var a = 1; // var ...

  3. Linux 中C/C++ search path(头文件搜索路径)

    https://blog.csdn.net/BjarneCpp/article/details/76135980 起因 我拿到了一套Linux下的C++代码,代码中有这个头文件#include < ...

  4. WIN10平板 如何设置不允许切换竖屏

    点击右下角的通知,然后点击旋转锁定,即可禁止自动竖屏切换  

  5. 微软BI 之SSIS 系列 - 使用 Multicast Task 将数据同时写入多个目标表,以及写入Audit 与增量处理信息

    开篇介绍 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反.非常直观 ...

  6. 如何生成唯一的server Id,server_id为何不能重复?

    我们都知道MySQL用server-id来唯一的标识某个数据库实例,并在链式或双主复制结构中用它来避免sql语句的无限循环.这篇文章分享下我对server-id的理解,然后比较和权衡生成唯一serve ...

  7. C#访问MySQL数据库的方法

    C#访问MySQL数据库的方法 (1)首先需要下载C#访问MySQL数据库的ADO.NET驱动程序 下载地址为: http://dev.mysql.com/downloads/connector/ne ...

  8. [svc]glusterfs的简单部署

    服务端安装 gluster01主机挂载磁盘 [root@glusterfs01 ~]# mkfs.xfs /dev/sdb [root@glusterfs01 ~]# mkdir -p /data/b ...

  9. 浏览器对HTML5特性检測工具Modernizr

    近期在做公司移动端运营的项目,需求中多处地方都会涉及动画. 相信非常多前端开发都会有这样的感触,对CSS3中的动画属性非常熟悉,可是因为对动画运动过程的理解不深入,经常仅仅能望而止步.CSS3中动画这 ...

  10. Socket网络编程--聊天程序(3)

    上一小节,已经讲到可以每个人多说话,而且还没有限制,简单的来说,我们已经完成了聊天的功能了,那么接下来我们要实现什么功能呢?一个聊天程序至少应该支持一对多的通讯吧,接下来就实现多个客户端往服务器发送数 ...