获取所需属性的Comparer

时间:2016-11-02 20:02:19

标签: c++

为了在某个标准容器std::sort

上使用Container<T>之类的标准函数
struct T{
    int x,y;
};

基于y值,您需要编写类似(例如)的内容:

std::vector<T> v;
//fill v
std::sort(v.begin(),v.end(),[](const auto& l,const auto& r){
    return l.y<r.y;
});

作为lambda函数编写的比较器使用过多,并在各种类和属性的代码中反复重写。

考虑到y的类型具有可比性的情况(如int< operator的重载),是否有任何方法可以实现以下目标:

std::sort(v.begin(),v.end(),imaginary::less(T::y)); // Imaginary code

在C ++中是否可以编写像less这样的函数?或类似的东西?

我在问,因为我记得某些托管语言中的内容(我不确定C#或Java)。但是,如果这是真的与否,我甚至不确定这些信息。

1 个答案:

答案 0 :(得分:7)

std::sort(v.begin(), v.end(), member_less(&T::y));

然后你可以做

</body>