Tôi đang làm việc trên ứng dụng C++.yêu cầu một véc tơ các điểm dựa trên một vector khác
tôi có 2 vectơ điểm
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f được định nghĩa typedef Point_<float> Point2f;
vectorAll có 1.000 điểm trong khi vectorSpecial có 10 điểm.
Bước đầu tiên:
tôi cần phải ra lệnh cho các điểm trong vectorSpecial tùy thuộc vào thứ tự của chúng trong vectorAll. Vì vậy, một cái gì đó như thế này:
For each Point in vectorSpecial
Get The Order Of that point in the vectorAll
Insert it in the correct order in a new vector
Tôi có thể làm một vòng lặp đôi và lưu chỉ mục. và sau đó sắp xếp các điểm dựa trên các chỉ mục của chúng. Tuy nhiên, phương pháp này mất quá nhiều thời gian khi chúng tôi có nhiều điểm (ví dụ 10000 điểm trong vectơTất cả và 1000 điểm trong vectơ đặc biệt nên đó là mười triệu lần lặp lại)
Phương pháp nào tốt hơn?
Bước thứ hai:
Một số điểm trong vectorSpecial có thể không có sẵn trong vectorAll. Tôi cần phải lấy điểm gần nhất với nó (bằng cách sử dụng công thức khoảng cách thông thường sqrt((x1-x2)^2 + (y1-y2)^2)
)
Điều này cũng có thể được thực hiện khi lặp, nhưng nếu ai đó có bất kỳ gợi ý nào cho phương pháp tốt hơn, tôi sẽ đánh giá cao nó.
Cảm ơn rất nhiều sự giúp đỡ nào
Lưu ý rằng việc gọi các thuật toán STL không loại trừ vòng lặp, nó chỉ ẩn chúng sau một lớp trừu tượng. – TemplateRex