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

时间:2019-05-07 12:06:21

标签: c++ algorithm sorting data-structures stdmap

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

示例-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

并且当存在与 key 对应的多组 value 时,此问题进一步升级。

由于我是C++的新手,所以我无法弄清楚如何使用预先存在的容器。

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

1 个答案:

答案 0 :(得分:3)

如果您可以稍微更改数据结构,

  1. 您可以使用std::pair<int, char>中的 std::vector ,然后 对其进行相应的排序,
  2. 或简单地使用std::set<std::pair<int, char>>,它将根据std::pair的默认opererator<进行排序。