У меня есть два класса Entity
и Ship
. Ship
наследуется от Entity
. Они имеют x
и y
в качестве атрибутов, которые представляют там положение на 2D-плоскости.
squared_distance
функция возвращает расстояние между кораблем и объектом.
class Entity
{
public:
int id, x, y;
Entity(int id, int x, int y) : id(id), x(x), y(y) {}
};
class Ship : public Entity
{
public:
int orientation, speed, rum;
Ship(int id, int x, int y, int ori, int s, int r):
Entity(id, x, y)
{
orientation = ori;
speed = s;
rum = r;
}
};
int squared_distance(Entity e, Ship s)
{
return pow((e.x - s.x), 2) + pow((e.y - s.y), 2);
}
Мне нужно найти ближайший объект к кораблю. У меня есть массив Entity
с именем entities
. Один из способов сделать это: пусть ship
- это объект Ship
.
index
, который передаст индекс ближайшего объекта в ship
.
int min_distance = 10000000;
int index;
for (int i = 0; i < entities.size(); ++i)
{
int curr_distance = squared_distance(entities[i], ship);
if (curr_distance < min_distance)
{
min_distance = curr_distance;
index = i;
}
}
How найти ближайший объект с помощью лямбды с std::min_element
в библиотеке алгоритмов?