关于用C++ lambda自定义STL容器排序函数的错误

struct gd{
double x,y;
};
bool  cmp(const gd &a,const gd &b)
{
return [&a,&b](const gd &a,const gd &b)->bool{
if(fabs(a.x-b.x)<1e-6) return (a.y-b.y<-1e-6);
else return (a.x-b.x<-1e-6);
};
}
set<gd, decltype(cmp)* > se(cmp);
int main()
{
return 0;
}
//目的是根据x和y从小到大排序。
//求解为什么实际不运行该lambda表达式
#C/C++#
全部评论
bool cmp(const gd &a, const gd &b) {     return [&a, &b]()->bool{         if(fabs(a.x - b.x) < 1e-6) {             return (a.y - b.y < -1e-6);         } else {             return (a.x - b.x < -1e-6);         }     }(); } 不必给lambda套个函数,campare 是个 callable 对象,不局限于函数指针。lambda也可以 auto cmp = []() {/*...*/}; std::set<Type, decltype(cmp)> mySet(cmp);
点赞 回复 分享
发布于 2019-11-06 13:54

相关推荐

肥沃富饶:可能初创公司,老板不懂技术
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务