Home > Backend Development > C++ > Why am I getting incorrect distances when using iterators to calculate distances between points?

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

DDD
Release: 2024-11-01 00:11:28
Original
654 people have browsed it

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

Using Iterators Correctly for Distance Calculations

You are encountering an error in your code when trying to calculate distances between points stored in a vector. It appears that the issue lies in the way you are using the iterator.

Your code uses std::vector iterators, which are pointers to elements within the vector. However, you are passing these iterators directly to the distance function, which expects pointers to the point objects themselves. This mismatch is causing incorrect results.

To resolve this, you have two options:

Option 1: Dereference the Iterators

You can dereference the iterators to obtain references to the corresponding point objects. This can be done using the * operator. Here's the modified 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>
Copy after login
Copy after login

Option 2: Use References in the Function

Alternatively, you can modify your distance function to take references to point objects directly:

<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>
Copy after login

This way, you can call the distance function with iterators directly:

<code class="C++">for (ii = po.begin(); ii != po.end(); ii++)
{
    for (jj = po.begin(); jj != po.end(); jj++)
    {
        cout << distance(*ii, *jj) << " ";
    }
}</code>
Copy after login
Copy after login

By using one of these methods, you should obtain the correct distance calculations between pairs of points in your vector.

The above is the detailed content of Why am I getting incorrect distances when using iterators to calculate distances between points?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template