您的位置:首页 > 产品设计 > UI/UE

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

2016-08-09 00:00 465 查看
摘要: C++ map struct value sort

在工作中,经常需要对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进行排序啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  map C++ value sort