根据map中的vaule进行排序呢,注意,value为struct自定义类型

在工作中,经常需要对map中的内容进行排序,对map进行排序呢有两种情况 1 map内部本身就是按序存储的,在插入<key,value>时,就会按照key的大小顺序存储,当然key必须是能够进行大小比较运算的。map默认的排序是从小到大的,如果需要用到从大到小的顺序,那么访问的时候只需要: for(map<,>::iterator iter = m.end(); m != m.begin(); m-- ) { ....... } 即可,不需要再进行造轮子。

2 根据value排序,且value是一个struct: 上例子: typedef struct { int a; string b; } Test;

    	struct cmp
	{
		bool operator()(const pair<string,Test>  &p1, const pair<string,Test> &p2)
                    {
                        return p1.second.a > p2.second.a;        //降序   降序的话将 > 改成  <
		}
	};

       void SortMapByValue(map<string,Test> &t_map,vector< pair<string,Test> >&t_vec )
        {
             for(map<string,Test>::iterator iter = t_map.begin();iter != t_map.end(); iter++)
                {
                    t_vec.push_back(make_pair(iter->first,iter->second));
                }
                   sort(t_vec.begin(),t_vec.end();cmp);            //升序
         }

这样就实现了对map中按照value进行排序啦

转载于:https://my.oschina.net/lcg521521/blog/730218

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值