저는 C++ 응용 프로그램을 만들고 있습니다.다른 벡터를 기반으로 한 점의 벡터를 정렬하십시오.
제가
vector<Point2f> vectorAll;
vector<Point2f> vectorSpecial;
Point2f가 typedef Point_<float> Point2f;
vectorAll 정의 vectorSpecial 10 점을 갖는다 1,000 포인트가되는 점의 2 개 경로를 갖는다.
첫 번째 단계 : 나는 vectorAll의 순서에 따라 vectorSpecial에 포인트를 주문해야
. 이 같은 그래서 뭔가 :
For each Point in vectorSpecial
Get The Order Of that point in the vectorAll
Insert it in the correct order in a new vector
내가 이중 루프를하고 인덱스를 저장할 수 있습니다. 인덱스에 따라 포인트를 정렬하십시오. 그러나이 방법은 많은 포인트 (예 : vectorAll의 10000 포인트와 vectorSpecial의 1000 포인트이므로 1 천만 반복이므로)를 사용하면 너무 오래 걸립니다.
더 좋은 방법은 무엇입니까?
두 번째 단계 : vectorSpecial에서
어떤 점 vectorAll에서 제공되지 않을 수 있습니다. 가장 가까운 점을 취해야합니다 (일반적인 거리 공식 sqrt((x1-x2)^2 + (y1-y2)^2)
을 사용하여)
이 작업은 루핑 할 때 수행 할 수 있지만 더 나은 방법에 대한 제안이 있으면 감사하겠습니다.
덕분에 어떤 도움이 많이
STL 알고리즘을 호출한다고해서 루핑이 제거되는 것은 아니며 추상화 레이어 뒤에 숨겨 지기만합니다. – TemplateRex