2016-03-23 11 views
0

mapにはalphabetに付けられた番号があります。 mapは最初の値を使用してデフォルトでソートされますが、frequencyつまり2番目の値でソートしてから印刷します。どうすればいいのですか? 編集::何も私はここで試すことができませんマップをC++で並べ替え

+4

これまでに試したことをお見せください – Mangesh

+4

マップを '>'ベクトルにダンプし、並べ替えて印刷します。 –

+0

@MohitJain少し詳しく教えてもらえますか? –

答えて

2

mapは、その第2の値に従って直接ソートすることはできません。しかし、それは手動で行うことができます。まず、mapのデータをvectorpairに保存し、必要に応じてベクターを並べ替えます。

しかし、とにかく、ここでは、上記の動作を説明し実行するために少しのコードスニペットです:

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(それはベクトルである)は、ご希望の出力を持っています。

関連する問題