Sto lavorando su un'applicazione C++.ordina un vettore di punti basato su un altro vettore
Ho 2 vettori di punti
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f è definito typedef Point_<float> Point2f;
vectorAll ha 1000 punti mentre vectorSpecial ha 10 punti.
Primo passo:
ho bisogno di ordinare i punti in vectorSpecial a seconda del loro ordine in vectorAll. Quindi qualcosa di simile:
For each Point in vectorSpecial
Get The Order Of that point in the vectorAll
Insert it in the correct order in a new vector
posso fare un doppio anello e salvare gli indici. e quindi ordinare i punti in base ai loro indici. Tuttavia questo metodo richiede troppo tempo quando abbiamo molti punti (ad esempio 10000 punti in vectorAll e 1000 punti in vectorSpecial quindi dieci milioni di iterazioni)
Quali sono i metodi migliori per farlo?
Secondo passo:
Alcuni punti in vectorSpecial potrebbero non essere disponibili in vectorAll. Ho bisogno di prendere il punto più vicino (usando la solita formula di distanza sqrt((x1-x2)^2 + (y1-y2)^2)
)
Questo può essere fatto anche in loop, ma se qualcuno ha suggerimenti per metodi migliori, lo apprezzerei.
Grazie molto per qualsiasi aiuto
Si noti che la chiamata agli algoritmi STL non elimina il looping, ma li nasconde dietro un livello di astrazione. – TemplateRex