【发布时间】:2019-09-25 02:19:45
【问题描述】:
我期待解决一个首先需要对一些数据进行排序的问题。
示例 - Key -> Values 在std::multimap。
它根据键自动按升序存储数据。
但是问题出现了,当我需要根据它们的值对重复的键进行排序时。
我尝试了一种愚蠢的方法,只需将一组重复的 key 转移到一个新的 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
当有多个value集合对应一个key时,这个问题会进一步升级。
由于我是 C++ 的新手,我无法弄清楚如何使用预先存在的容器来做到这一点。
这件事在SQL 中很容易实现,但在C++ 中,我不知道。
【问题讨论】:
-
在 C++ 中,您不应该使用容器进行排序。你应该使用
std::sort。 -
请提供您尝试解决问题的方法。否则你几乎找不到任何人试图帮助你。
-
显示应该修复的代码。
-
"这个东西在 SQL 中很容易实现,但在 C++ 中,我不知道。" 嗯,是的。其中一个是关系数据库,另一个是通用编程语言。
multimap不是数据库。 SQL 数据库表也不排序;您只需获得已排序的 视图。
标签: c++ algorithm sorting data-structures stdmap