Mengendalikan Ketepatan Titik Terapung dalam std::map dengan Kekunci Berganda
Isu penggunaan nombor titik terapung berketepatan dua sebagai kunci dalam std::map timbul disebabkan oleh had ketepatan yang wujud. Masalah biasa yang dialami ialah ketidakupayaan untuk mencari kunci tertentu akibat ralat pembundaran titik terapung.
Mengatasi Isu Perbandingan NaN
Untuk menangani isu perbandingan NaN, pertimbangkan untuk melaksanakan pengendali perbandingan tersuai, seperti safe_double_less, yang mengendalikan nilai NaN dengan betul.
Menggunakan Berbilang Nilai Utama
Daripada bergantung pada gelagat pencarian kunci tunggal yang mungkin tidak boleh dipercayai, pertimbangkan untuk menggunakan bekas std::multimap atau std::multiset. Ini membenarkan berbilang nilai untuk dikaitkan dengan setiap kunci, memastikan pengambilan data yang lebih tepat.
Memperkenalkan Pertanyaan Berasaskan Epsilon
Untuk melakukan perbandingan kabur apabila menanyakan bekas , buat fungsi pembantu seperti my_equal_range. Fungsi ini menggunakan toleransi epsilon yang ditentukan untuk mencari julat kunci yang cukup hampir dengan kunci sasaran.
Ujian untuk Kewujudan Utama
Untuk menguji kewujudan kunci dalam bekas, gunakan fungsi seperti key_exists. Fungsi ini menggabungkan prinsip perbandingan kabur dan pengambilan julat kunci untuk menentukan sama ada kunci, dalam toleransi epsilon yang ditentukan, wujud dalam bekas.
Pengesyoran
Sementara itu mungkin untuk menggunakan kekunci titik terapung dengan std::map, ia biasanya tidak digalakkan kerana had ketepatan yang dinyatakan di atas. Pertimbangkan untuk menggunakan pendekatan alternatif, seperti kekunci integer atau menukar nilai titik terapung kepada rentetan sebelum menggunakannya sebagai kunci peta.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Isu Ketepatan Titik Terapung Apabila Menggunakan std::map dengan Kekunci Berganda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!