正确使用迭代器进行距离计算
尝试计算存储在向量中的点之间的距离时,您在代码中遇到错误。看来问题在于您使用迭代器的方式。
您的代码使用 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中文网其他相关文章!