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

DDD
Lepaskan: 2024-11-01 00:11:28
asal
534 orang telah melayarinya

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>
Salin selepas log masuk
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!