Я работаю над приложением C++.
У меня есть 2 вектора точек
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f определенtypedef Point_<float> Point2f;
vectorAll имеет 1000 баллов, а vectorSpecial — 10 баллов.
Первый шаг:
Мне нужно упорядочить точки в vectorSpecial в зависимости от их порядка в vectorAll. Что-то вроде этого:
For each Point in vectorSpecial
Get The Order Of that point in the vectorAll
Insert it in the correct order in a new vector
Я могу сделать двойной цикл и сохранить индексы. а затем упорядочить точки на основе их индексов. Однако этот метод занимает слишком много времени, когда у нас много точек (, например, 10000 точек в vectorAll и 1000 точек в vectorSpecial, так что это десять миллионов итераций)
Каковы лучшие методы сделать это?
Второй этап:
Некоторые точки в vectorSpecial могут быть недоступны в vectorAll. Мне нужно взять ближайшую к ней точку (, используя обычную формулу расстоянияsqrt((x1-x2)^2 + (y1-y2)^2)
)
Это также можно сделать при зацикливании, но если у кого-то есть предложения по улучшению методов, я был бы признателен.
Большое спасибо за любую помощь