如何在带有 lambda 表达式的 class 中使用 std::any_of?

How to use std::any_of inside a class with lambda expression?

我正在使用机器人用 C++ 编写一个小型模拟程序,我需要检查机器人是否发生碰撞。我在我的模拟 class:

中实现了这个功能
bool World::isRobotColliding(Robot *r) {
    for (Robot *other_robot: robots) {
        double d = distance(r->getX(), r->getY(), other_robot->getX(), other_robot->getY());
        if ((r->getRadius() + other_robot->getRadius()) >= d) return true;
    }
    return false;
}

double World::distance(const double &x_1, const double &y_1, const double &x_2, const double &y_2) const {
    return sqrt((x_1 - x_2) * (x_1 - x_2) + (y_1 - y_2) * (y_1 - y_2));
}

这里我的 IDE 建议我用 std::any_of() 方法替换 for 循环。但是,我无法正确使用它。这是我试过的:

    return std::any_of(robots.begin(), robots.end(), [r, this](const Robot *&other_robot) {
        return
                (r->getRadius() + other_robot->getRadius())
                >=
                distance(r->getX(), r->getY(), other_robot->getX(), other_robot->getY());
    });

如何在我的上下文中使用 std::any_of()?

谢谢

谢谢大家的指教,

问题是通过引用传递的指针。

    return std::any_of(robots.begin(), robots.end(), [r, this](const Robot *other_robot) {
        double d = distance(r->getX(), r->getY(), other_robot->getX(), other_robot->getY());
        if(d == 0) return false;
        return
                (r->getRadius() + other_robot->getRadius())
                >=
                d;
    });

这段代码完全符合我的预期。

我需要通过上下文中的第一个机器人 r 以及 this。我本可以在我的机器人中声明一个距离函数并省略 this.