заказать вектор точек на основе другого вектора

Я работаю над приложением 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))

Это также может быть сделано при зацикливании, но если у кого-то есть предложения по лучшим методам, я был бы признателен.

Большое спасибо за любую помощь

Ответы на вопрос(2)

Ваш ответ на вопрос