在对键进行排序后按值对多重映射进行排序

时间:2014-01-30 05:59:36

标签: c++

multimap <int, string> mm; 

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

我能够使用多重映射键以数字顺序获取一些数据,但在重复的情况下,我希望这些值也按顺序排列。

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

最简单的方法是什么?看看地图如何只按键排序,我认为我必须制作一些类型,但不知道如何继续。

2 个答案:

答案 0 :(得分:3)

multimap放入set<pair<int, string>>

答案 1 :(得分:3)

有两种合理的解决方案 - 选择更有意义的解决方案。

如果您将int视为一个关键字,string视为一个值,但一个关键字可以映射到多个值 - 换句话说,如果您查看两个关键字对int作为同一“群组”的一部分,您可能希望轻松地遍历特定群组,然后使用map<int, multiset<string> >

如果您将每个intstring对视为不同,并且某些对可能发生以使其具有相同的int,则您需要{ {1}}。

如果不存在重复对(multiset<pair<int, string> >int相同),则它们分别成为stringmap<int, set<string> >