c++ map 按value排序

引子

我们都知道c++ map的底层使用的红黑树管理节点,因此map中的数据存放实际上已经市排好序的,但是是通过比较key的值进行排序的,很多时候我们需要对map的value进行排序这种时候我们该怎么解决呢?

解决方案

下面我们给出一种解决方案:

将map中的数据拷贝存放在vector中,然后使用stl的sort()函数对vector进行排序。

相见如下代码

#include  
#include
#include  
#include 
#include 

using namespace std;

typedef pair PAIR;

bool compair_by_value(const PAIR& lhs, const PAIR& rhs)
{
    return lhs.second < rhs.second;
};

int main() 
{
    map name_score_map;
    name_score_map["Zhangsan"] = 90;
    name_score_map["Lisi"] = 79;
    name_score_map.insert(make_pair("Wangwu", 99));

    vector name_score_vec(name_score_map.begin(), name_score_map.end());
    sort(name_score_vec.begin(), name_score_vec.end(), compair_by_value);

    for(int i = 0; i != name_score_vec.size(); ++i)
    {
        cout << name_score_vec[i] << endl;
    }

    return 0;
}

运行结果

c++ map 按value排序_第1张图片

你可能感兴趣的:(C++)