заказать вектор точек на основе другого вектора
Я работаю над приложением C ++.
У меня есть 2 вектора точек
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f определенtypedef Point_<float> Point2f;
vectorAll имеет 1000 баллов, а vectorSpecial - 10 баллов.
First Step:
Мне нужно упорядочить точки в 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, так что итерация в десять миллионов)
Каковы лучшие методы сделать это?
Second Step:
Некоторые точки в vectorSpecial могут быть недоступны в vectorAll. Мне нужно взять точку, которая ближе всего к нему (с помощью обычной формулы расстоянияsqrt((x1-x2)^2 + (y1-y2)^2)
)
Это также может быть сделано при зацикливании, но если у кого-то есть предложения по лучшим методам, я был бы признателен.
Большое спасибо за любую помощь