如何在带有 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
.
我正在使用机器人用 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
.