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

标签 c++ algorithm sorting data-structures stdmap

我期待着解决一个首先需要对一些数据进行排序的问题。

示例 - Key -> Values in std::multimap

它根据key自动升序存储数据。

但问题出现了,当我需要根据它们的对重复的进行排序时。

我尝试了一种愚蠢的方法,只是将一组重复的 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

当有多组对应一个时,这个问题会进一步升级。

由于我是 C++ 的新手,我不知道如何使用预先存在的容器来做到这一点。

这个东西在SQL中很容易实现,但是在C++中,我不知道。

最佳答案

如果稍微改变一下数据结构,

  1. 你可以使用 std::vectorstd::pair<int, char> 然后 相应地排序,
  2. 或者简单地使用 std::set<std::pair<int, char>> , 将按照默认 opererator< 排序的 std::pair .

关于c++ - 如何使用 `std::multimap` 或任何其他容器对多个值进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022270/

相关文章:

c++ - 创建一个只有模板头文件的项目库文件

algorithm - Dijkstra 最短路径算法

python - 如何按照键的排序顺序从字典中获取值?

c++ - 如何使我的字符缓冲区性能更高?

c++ - 没有匹配的函数来调用 class::class

c++ - 访问数组 C++ 最后地址的最安全方法

algorithm - 计算图中三角形数量的有效算法是什么?

python - 在排序数组的联合中找到第 k 个最小的元素

c - 在旋转排序数组中查找枢轴点

c# - 根据优先级数组对字符串数组进行排序