2014-01-30 194 views
2
multimap <int, string> mm; 

(1, A), 
(2, B), 
(3, D), 
(3, C) 

我能夠使用多圖鍵以數字順序獲得一些數據,但在重複的情況下,我希望按順序排列值。按鍵排序後按值對multimap進行排序

(1, A), 
(2, B), 
(3, C), 
(3, D) 

這樣做的最簡單方法是什麼?看到地圖只能按鍵排序,我想我必須做出一些排序,但不知道如何繼續。

+0

一組對如何? –

+0

你可以定義你自己的'compare'函數並對它們進行排序。 – herohuyongtao

回答

3

有兩個合理的解決方法---選擇一個更合理的解決方案。

如果查看int作爲密鑰和string作爲一個值,而是一個鍵可以被映射到多個值---換句話說,如果查看兩對相同的int爲相同的部分「組」,您可能想要輕鬆遍歷特定組,然後使用map<int, multiset<string> >

如果你查看每個intstring對作爲不同的,有的只是對可能發生有相同int,那麼你想有一個multiset<pair<int, string> >

在該複製對(兩者intstring是相同的)應該不存在的情況下,這些成爲分別map<int, set<string> >set<pair<int, string> >

3

將您的multimap置入set<pair<int, string>>