对std::multiset内的相等范围进行排序



假设我有一个具有键比较函数Comp1T的多集。假设Comp2是一个更精细的键比较函数,因此Comp1下的a<b意味着Comp2下的a<b,但并不总是相反(因此Comp2能够进一步对Comp1的等范围进行排序)。如何使用Comp2T进行排序?(我知道在c++ 11中,multiset将保持稳定的排序顺序。)

对不起,您不能为multimap指定多个排序顺序。

在multimap比较函数中,任何相等比较的元素的顺序都是不可配置的。

最接近的可能是:

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

  2. 创建std::map<key,>

检索正确的桶,然后选择正确的数据。

然而,在进行这样的操作之前,您可能需要问一下为什么需要这种访问,为什么不直接使用comp2作为multimap的比较函数。如果您对要解决的问题解释得更多一些,可能会有一个更合适的数据结构可供您选择。

最新更新