对std::multiset内的相等范围进行排序
Sort equal ranges within std::multiset
假设我有一个具有键比较函数Comp1
的T
的多集。假设Comp2
是一个更精细的键比较函数,因此Comp1
下的a<b
意味着Comp2
下的a<b
,但并不总是相反(因此Comp2
能够进一步对Comp1
的等范围进行排序)。如何使用Comp2
对T
进行排序?(我知道在c++ 11中,multiset将保持稳定的排序顺序。)
对不起,您不能为multimap指定多个排序顺序。
在multimap比较函数中,任何相等比较的元素的顺序都是不可配置的。
最接近的可能是:
创建一个基于std::map的CBucket,根据comp2比较器对其元素进行排序。
创建std::map<key,>
检索正确的桶,然后选择正确的数据。
然而,在进行这样的操作之前,您可能需要问一下为什么需要这种访问,为什么不直接使用comp2作为multimap的比较函数。如果您对要解决的问题解释得更多一些,可能会有一个更合适的数据结构可供您选择。
相关文章:
- 具有不满足严格弱排序的值的 C++ 顺序范围
- 如何按升序对输入文件中的数字进行排序,并找到它们的范围和中值
- 从(排序的)数字列表中获取数字范围
- 对整个范围进行排序时,std::p artial_sort() 与 std::sort() 的性能?
- 给定数组范围的选择排序问题
- 将排序范围插入 std::set 并带有提示
- 是否存在用于按以下方式对两个范围进行排序和分区的标准算法?
- c ++ 是否有 STL 算法来检查范围是否严格排序
- 字符串订阅超出范围 - 字符串气泡排序
- 从排序的数字数组中返回数字范围的最快方法是什么?
- 如何在 c++ 中合并多个排序范围
- 合并排序 - 矢量下标超出范围
- 向量下标超出范围-气泡排序-改进
- 矢量下标超出范围-冒泡排序
- std::set_intersection用于已排序的范围,[_]用于未排序的范围/容器
- 正在检查排序列表中是否有一个范围内的数字
- 在向量的排序向量中查找特定值的索引范围
- 矢量下标超出范围错误,C++,冒泡排序
- 将值固定到一个范围(排序)
- c++范围排序视图-如何创建const_iterator