Estoy trabajando en una aplicación C++.ordenar un vector de puntos basado en otro vector
tengo 2 vectores de puntos
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f se define typedef Point_<float> Point2f;
vectorAll tiene 1000 punto mientras vectorSpecial tiene 10 puntos.
Primer paso:
necesito para ordenar los puntos en vectorSpecial en función de su orden en vectorAll. Así que algo como esto:
For each Point in vectorSpecial
Get The Order Of that point in the vectorAll
Insert it in the correct order in a new vector
que puede hacer un bucle doble y guardar los índices. y luego ordena los puntos según sus índices. Sin embargo, este método lleva demasiado tiempo cuando tenemos muchos puntos (por ejemplo, 10000 puntos en vectorAll y 1000 puntos en vectorSpecial así que son diez millones de iteraciones)
¿Cuáles son los mejores métodos para hacerlo?
Segundo paso:
Algunos puntos en vectorSpecial podrían no estar disponibles en vectorAll. Necesito tomar el punto más cercano (usando la fórmula de distancia habitual sqrt((x1-x2)^2 + (y1-y2)^2)
)
Esto también se puede hacer cuando se realiza un bucle, pero si alguien tiene alguna sugerencia para mejores métodos, se lo agradecería.
Muchas gracias por cualquier ayuda
Tenga en cuenta que llamar algoritmos STL no elimina el bucle, simplemente los oculta detrás de una capa de abstracción. – TemplateRex