关于用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

相关推荐

2025-12-13 14:51
已编辑
井冈山大学 算法工程师
龙虾x:算法比你强的没有你美,比你美的…..算了已经没有比你美的了
工作两年想退休了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-11-19 14:56
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务