gpt4 book ai didi

c++ - lambda 返回 bool 值

转载 作者:IT老高 更新时间:2023-10-28 22:02:40 32 4
gpt4 key购买 nike

我想找到 Y 坐标较小的点(如果这样的点更多,找到 X 最小的那个)。使用 lambda 编写时:

    std::min_element(begin, end, [](PointAndAngle& p1, PointAndAngle& p2) {
if (p1.first->y() < p2.first->y())
return true;
else if (p1.first->y() > p2.first->y())
return false;
else
return p1.first->x() < p2.first->x();
}

我得到:

error C3499: a lambda that has been specified to have a void return type cannot return a value

有什么区别:

    // works
std::min_element(begin, end, [](PointAndAngle& p1, PointAndAngle& p2) {
return p1.first->y() < p2.first->y();
}

    // does not work
std::min_element(begin, end, [](PointAndAngle& p1, PointAndAngle& p2) {
if (p1.first->y() < p2.first->y())
return true;
else
return false;
}

最佳答案

正如 Mike 所指出的,如果 lambda 的主体是单个 return 语句,则从该语句推断返回类型(参见 5.1.2/4)(感谢 Mike)。

std::min_element(begin, end, [] (const PointAndAngle & p1, const PointAndAngle & p2)
-> bool
{
if (p1.first->y() < p2.first->y())
return true;
else
return false;
}

注意->bool.

关于c++ - lambda 返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889087/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com