假设我有一个带有密钥比较函数T
的多字节Comp1
。假设Comp2
是一个更精细的密钥比较函数,因此a<b
下的Comp1
隐含a<b
下的Comp2
,但反之亦然(Comp2
}能够进一步对Comp1
)的等范围进行排序。如何使用T
对Comp2
进行排序? (我知道使用C ++ 11,multiset将保持稳定的排序顺序。)
答案 0 :(得分:2)
抱歉,您无法为多地图指定多个排序顺序。
对于多图比较功能同等比较的任何元素的顺序是不可配置的。
你最接近的是:
根据std :: map创建一个CBucket,它通过comp2比较器对其元素进行排序。
- 醇>
创建一个std :: map&lt; key,CBucket,comp1&gt;
从中检索正确的存储桶,然后选择正确的数据。
但是,在沿着这样的路径走下去之前,你可能想问一下为什么需要这种访问,以及为什么你不仅仅使用comp2作为multimap的比较功能。如果您对要解决的问题进行更多解释,可能会选择更合适的数据结构。