거리 계산에 올바른 반복자 사용
벡터에 저장된 점 사이의 거리를 계산하려고 할 때 코드에 오류가 발생했습니다. 문제는 반복자를 사용하는 방식에 있는 것 같습니다.
귀하의 코드는 벡터 내의 요소에 대한 포인터인 std::Vector 반복자를 사용합니다. 그러나 이러한 반복자를 거리 함수에 직접 전달하면 점 개체 자체에 대한 포인터가 필요합니다. 이러한 불일치로 인해 잘못된 결과가 발생합니다.
이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.
옵션 1: 반복자 참조 해제
해당 포인트 객체에 대한 참조를 얻기 위한 반복자입니다. 이는 * 연산자를 사용하여 수행할 수 있습니다. 수정된 코드는 다음과 같습니다.
<code class="C++">for (ii = po.begin(); ii != po.end(); ii++) { for (jj = po.begin(); jj != po.end(); jj++) { cout << distance(*ii, *jj) << " "; } }</code>
옵션 2: 함수에서 참조 사용
또는 거리 함수를 수정하여 점 개체에 대한 참조를 직접 가져올 수 있습니다.
<code class="C++">float distance(const point& p1, const point& p2) { return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y)); }</code>
이 방법으로 반복자를 사용하여 거리 함수를 직접 호출할 수 있습니다.
<code class="C++">for (ii = po.begin(); ii != po.end(); ii++) { for (jj = po.begin(); jj != po.end(); jj++) { cout << distance(*ii, *jj) << " "; } }</code>
이러한 방법 중 하나를 사용하면 다음과 같은 점 쌍 사이의 정확한 거리 계산을 얻어야 합니다. 당신의 벡터.
위 내용은 반복자를 사용하여 점 사이의 거리를 계산할 때 거리가 잘못된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!