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

Sort multimap by values after keys have been sorted

本文关键字:排序 映射      更新时间:2023-10-16
multimap <int, string> mm; 
(1, A),
(2, B),
(3, D),
(3, C)

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

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

做这件事最简单的方法是什么?至于地图如何只按键排序,我想我必须制作一套某种类型的地图,但不确定如何进行。

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

如果您将int视为键,将string视为值,但一个键可以映射到多个值——换句话说,如果您将具有相同int的两对视为同一"组"的一部分,并且您可能希望轻松地遍历特定组,则使用map<int, multiset<string> >

如果您将每个intstring对视为不同的,并且某些对可能恰好具有相同的int,则您需要一个multiset<pair<int, string> >

在不应存在重复对(intstring都相同)的情况下,它们分别变为map<int, set<string> >set<pair<int, string> >

将您的multimap放入set<pair<int, string>>中。