2014-01-30 47 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>>