Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah saya mendapat jarak yang salah apabila menggunakan iterator untuk mengira jarak antara titik?

Mengapakah saya mendapat jarak yang salah apabila menggunakan iterator untuk mengira jarak antara titik?

DDD
DDDasal
2024-11-01 00:11:28618semak imbas

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

Menggunakan Iterator dengan Betul untuk Pengiraan Jarak

Anda menghadapi ralat dalam kod anda semasa cuba mengira jarak antara titik yang disimpan dalam vektor. Nampaknya isu ini terletak pada cara anda menggunakan iterator.

Kod anda menggunakan std::vector iterator, yang merupakan penunjuk kepada elemen dalam vektor. Walau bagaimanapun, anda menghantar iterator ini terus ke fungsi jarak, yang menjangkakan penunjuk ke objek titik itu sendiri. Ketidakpadanan ini menyebabkan hasil yang tidak betul.

Untuk menyelesaikan masalah ini, anda mempunyai dua pilihan:

Pilihan 1: Nyahrujuk Pelaksana

Anda boleh membatalkan rujukan iterator untuk mendapatkan rujukan kepada objek titik yang sepadan. Ini boleh dilakukan menggunakan operator *. Berikut ialah kod yang diubah suai:

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

Pilihan 2: Gunakan Rujukan dalam Fungsi

Sebagai alternatif, anda boleh mengubah suai fungsi jarak anda untuk mengambil rujukan ke objek secara langsung:

<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>

Dengan cara ini, anda boleh memanggil fungsi jarak dengan iterator secara terus:

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

Dengan menggunakan salah satu kaedah ini, anda harus mendapatkan pengiraan jarak yang betul antara pasangan mata dalam vektor anda.

Atas ialah kandungan terperinci Mengapakah saya mendapat jarak yang salah apabila menggunakan iterator untuk mengira jarak antara titik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn