c – 标准库是否有比较器反转机制?

我知道标准库有std::reverse_iterator<...>,给定迭代器类型,它可以用来获得它的反向(类型).

它是否也有类似的机制来反转用于排序/排序的比较器?采用比较器类型并产生对应于相反顺序的比较器(假设顺序是可逆的)?例如
与std :: reverse_comparator< std :: greater< int>>等同于std :: less< int>?

解决方法:

C 17引入了std :: not_fn,它将“替换”std :: greater< int> by std :: less_equal< int>.

这不是std :: sort / std :: map的正确比较器.

另外在std中,我认为它不存在“转换”为std :: less< int>,但你可以轻松编写自己的东西,例如:

template <typename Comparer>
struct InvComparer
{
public:
    explicit InvComparer(Comparer comparer) : comp(comparer) {}
    template <typename T1, typename T2>
    bool operator() (const T1& lhs, const T2& rhs) const { return comp(rhs, lhs); };
private:
    Comparer comp;
};

Demo

上一篇:java – 嵌套字段的Comparator.comparing(…)


下一篇:Comparator接口Comparable接口 排序接口的使用方式