我有一个map
,其中有一个数字附加到alphabet
。 map
默认使用第一个值排序,但我想按frequency
排序,即第二个值然后打印它。请帮帮我
编辑::我无法在这里尝试
答案 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
(它是一个向量)具有您想要的输出。