如何通过自定义比较谓词根据键和值对 std::multimap 条目进行排序?

Abh*_*mar -1 c++ sorting multimap comparator

我正在寻找一种方法按键按升序std::multimap对条目进行排序,但如果键匹配,则按值按降序排序

是否可以使用自定义Compare谓词来实现?

The*_*ind 5

Map 的Compare谓词仅将作为参数。不幸的是,您无法仅使用谓词来使用对同一存储桶中的条目进行排序。

重要的是- 仍然可以通过其他方式实现这种场景。如果您可以使用,这里emplace_hint是如何操作的答案。


默认情况下,使用 时,键按升序排序std::less。为了实现自定义谓词,您可以使用 lambda(或任何其他形式的二元谓词):

const auto lessPredicate = [](const MyClass& lhs, const MyClass& rhs) {
    return lhs.value < rhs.value;
};
std::multimap<MyClass, std::string, decltype(lessPredicate)> my_map { lessPredicate };
Run Code Online (Sandbox Code Playgroud)