如何使用`std::multimap`或其他容器对多个值进行排序?

3

我希望解决一个问题,首先需要对一些数据进行排序。

例如 - 关键字 -> 在 std::multimap 中的

它会根据关键字自动按升序存储数据。

但是,当我需要根据它们的对重复的关键字进行排序时,就会出现问题。

我尝试了一个愚蠢的方法,只是将一组重复的关键字转移到新的std::multimap中,然后进行排序和存储,但这会导致代码的重复实现,增加空间和时间的复杂性。

例如:

Key - Values
 9  -  e
 3  -  b
 1  -  c
 1  -  a
 5  -  d
 9  -  a

期望的排序后数值为:

1 - a
1 - c
3 - b
5 - d
9 - a
9 - e

但是使用multimap输出将返回:
1 - c
1 - a
3 - b
5 - d
9 - e
9 - a

当有多组与一个键相对应的值时,这个问题会进一步升级。

由于我是C++的新手,无法使用现有容器来解决这个问题。

在SQL中很容易实现这个功能,但在C++中我不知道该怎么做。


在C++中,你不应该使用容器进行排序。你应该使用std::sort - nwp
1
请提供您尝试解决问题的方式。否则,您很难找到任何人来帮助您。 - skratchi.at
展示需要修复的代码。 - Marek R
“这个在SQL中很容易实现,但在C++中我不知道。” 嗯,是的。其中一个是关系型数据库,另一个是通用编程语言。multimap不是数据库。而且SQL数据库表也没有排序;你只是得到一个已排序的视图 - Nicol Bolas
1个回答

3

1
谢谢,这会在一定程度上解决我的问题,但我将无法对集合中的值进行任何修改。 - Mrityunjay
@Mrityunjay 我建议你提出一个新的问题,展示代码解释“我将无法对集合中的值进行任何修改”的含义。这样,其他人可以更好地帮助你。 - JeJo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接