首页  >  文章  >  后端开发  >  为什么在使用迭代器计算点之间的距离时得到的距离不正确?

为什么在使用迭代器计算点之间的距离时得到的距离不正确?

DDD
DDD原创
2024-11-01 00:11:28536浏览

Why am I getting incorrect distances when using iterators to calculate distances between points?

正确使用迭代器进行距离计算

尝试计算存储在向量中的点之间的距离时,您在代码中遇到错误。看来问题在于您使用迭代器的方式。

您的代码使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn