用c ++排序地图

时间:2016-03-23 06:04:40

标签: c++ c++11 hashmap printf

我有一个map,其中有一个数字附加到alphabetmap默认使用第一个值排序,但我想按frequency排序,即第二个值然后打印它。请帮帮我 编辑::我无法在这里尝试

1 个答案:

答案 0 :(得分:2)

您无法根据其第二个值直接对map进行排序。但是,它可以手动完成。首先,将map的数据保存到vector pair,然后根据需要对矢量进行排序。

但无论如何,这里有一个小代码片段来执行上述操作:

template <typename T1, typename T2> struct less_second {
    typedef pair<T1, T2> type;
    bool operator ()(type const& a, type const& b) const {
        return a.second < b.second;
    }
};

map<key_t, value_t> mymap; /* It is map you want to sort according to the second argument*/
/* ...
   ...
   ...  */

vector<pair<key_t, value_t> > mapcopy(mymap.begin(), mymap.end());
sort(mapcopy.begin(), mapcopy.end(), less_second<key_t, value_t>());

现在,mapcopy (它是一个向量)具有您想要的输出。