2016-03-23 26 views
0
'a ekleyin

alphabet'a eklenmiş bir numaraya sahip bir map sahibim. map, ilk değer kullanılarak varsayılan olarak sıralanmıştır, ancak bunu frequency i.e ikinci değer olarak sıralamak ve sonra yazdırmak istiyorum. Lütfen bana yardım edin Düzenleme: Burada deneyebilecek hiçbir şey yokBir haritayı C++

+4

Bize şu ana kadar denediğiniz şeyi gösterme – Mangesh

+4

Haritayı bir > 'haline getirin, sıralayın ve yazdırın. –

+0

@MohitJain Biraz detaylandırır mısınız? –

cevap

2

map ürününü doğrudan ikinci değerine göre ayıramazsınız. Ancak, manuel olarak yapılabilir. İlk olarak, map verilerini vectorpair'a kaydedin ve ardından vektörü ihtiyacınıza göre sıralayın. istediğiniz çıkışı vardır

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>()); 

Şimdi mapcopy(bir vektör):

Ama neyse burada operasyon açıkladı üzerinde performans için biraz kod parçacığı olduğunu.

İlgili konular