如何使用 `std::multimap` 或任何其他容器对多个值进行排序?
How to use `std::multimap` or any other container to sort multiple values?
我期待解决首先需要对一些数据进行排序的问题。
示例 - Key -> Values in std::multimap
.
根据key自动升序存储数据
但是问题出现了,当我需要根据 值 .
对重复的 键 进行排序时
我尝试了一种愚蠢的方法,只是简单地将一组重复的 key 转移到一个新的 std::multimap
中,然后排序并存储回去,但这太多了重复编码以实现单个事物导致增加 space 和时间复杂度。
例如:
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 的输出会 return:
1 - c
1 - a
3 - b
5 - d
9 - e
9 - a
当有多组 values 对应 key.
时,这个问题会进一步升级
由于我是 C++
的新手,我无法弄清楚如何使用预先存在的容器来做到这一点。
这个东西在 SQL
中很容易实现,但在 C++
中,我不知道。
如果稍微改变一下数据结构,
- 您可以使用 std::vector 或
std::pair<int, char>
,然后
相应地排序,
- 或者简单地使用
std::pair
的 std::set<std::pair<int, char>>
, which will be sorted as per the default opererator<
。
我期待解决首先需要对一些数据进行排序的问题。
示例 - Key -> Values in std::multimap
.
根据key自动升序存储数据
但是问题出现了,当我需要根据 值 .
对重复的 键 进行排序时我尝试了一种愚蠢的方法,只是简单地将一组重复的 key 转移到一个新的 std::multimap
中,然后排序并存储回去,但这太多了重复编码以实现单个事物导致增加 space 和时间复杂度。
例如:
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 的输出会 return:
1 - c
1 - a
3 - b
5 - d
9 - e
9 - a
当有多组 values 对应 key.
时,这个问题会进一步升级由于我是 C++
的新手,我无法弄清楚如何使用预先存在的容器来做到这一点。
这个东西在 SQL
中很容易实现,但在 C++
中,我不知道。
如果稍微改变一下数据结构,
- 您可以使用 std::vector 或
std::pair<int, char>
,然后 相应地排序, - 或者简单地使用
std::pair
的std::set<std::pair<int, char>>
, which will be sorted as per the defaultopererator<
。