【问题标题】:Sort equal ranges within std::multiset在 std::multiset 中对相等的范围进行排序
【发布时间】:2014-07-27 06:24:01
【问题描述】:

假设我有一组 T 和键比较函数 Comp1。假设Comp2 是一个更精细的键比较函数,因此Comp1 下的a<b 意味着Comp2 下的a<b,但并非总是相反(因此Comp2 能够进一步排序@987654329 的相等范围@)。我将如何使用Comp2T 进行排序? (我知道使用 C++11,multiset 会保持稳定的排序顺序。)

【问题讨论】:

  • 您的意思是,“我如何对multiset<Key, Value, Comp1>Comp2 进行排序?”
  • 为什么不能只使用 comp2 作为比较器?
  • 您是否尝试使用Comp2 对同一键的值进行排序?

标签: c++ algorithm sorting c++11 multiset


【解决方案1】:

抱歉,您不能为多图指定多个排序顺序。

对于多图比较功能,任何相同比较的元素的顺序是不可配置的。

您可能得到的最接近的是:

  1. 基于 std::map 创建一个 CBucket,它通过 comp2 比较器对其元素进行排序。

  2. 创建一个 std::map

从中检索正确的存储桶,然后选择正确的数据。

但是,在走这样的道路之前,您可能想问一下为什么需要这种访问权限以及为什么不只是使用 comp2 作为多图的比较功能。如果您对您正在解决的问题进行更多解释,您可能会选择更合适的数据结构。

【讨论】:

    猜你喜欢
    • 2017-10-30
    • 2018-01-09
    • 2021-06-01
    • 2012-10-23
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多