在std :: multiset中对相等范围进行排序

时间:2014-06-06 04:18:41

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

假设我有一个带有密钥比较函数T的多字节Comp1。假设Comp2是一个更精细的密钥比较函数,因此a<b下的Comp1隐含a<b下的Comp2,但反之亦然(Comp2 }能够进一步对Comp1)的等范围进行排序。如何使用TComp2进行排序? (我知道使用C ++ 11,multiset将保持稳定的排序顺序。)

1 个答案:

答案 0 :(得分:2)

抱歉,您无法为多地图指定多个排序顺序。

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

你最接近的是:

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

  2.   
  3. 创建一个std :: map&lt; key,CBucket,comp1&gt;

  4.         

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

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