为了在某个标准容器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)。但是,如果这是真的与否,我甚至不确定这些信息。
答案 0 :(得分:7)
std::sort(v.begin(), v.end(), member_less(&T::y));
然后你可以做
</body>