Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pembanding Telus Meningkatkan Carian Heterogen dalam Bekas Bersekutu C 14?
Pembanding Lutsinar dalam C 14
C 14 memperkenalkan perubahan ketara kepada bekas bersekutu, kerana templat fungsi ahli mencari, mengira, terikat_rendah, upper_bound, dan equal_range kini memerlukan pembanding telus untuk mengambil bahagian dalam beban berlebihan resolusi.
Tujuan Pembanding Telus
Pembanding lutsinar bertujuan untuk menyelesaikan isu carian heterogen dalam bekas bersekutu. Sebelum C 14, bekas bersekutu hanya boleh melakukan carian dengan kunci jenis yang tepat sebagai kunci bekas. Walau bagaimanapun, dalam banyak senario, adalah wajar untuk membenarkan carian dengan kekunci yang boleh ditukar kepada jenis kunci bekas.
Contoh Pembanding Telus
Contoh berikut menggambarkan pembanding telus:
template <> struct less<> { template <class T, class U> auto operator()(T&& t, U&& u) const -> decltype(std::forward<T>(t) < std::forward<U>(u)); typedef *unspecified* is_transparent; };
Pembanding ini boleh digunakan dengan heterogen jenis, kerana ia menerima sebarang jenis hujah dan hanya memajukannya kepada pengendali perbandingan.
Kesan pada Bekas Standard
Secara lalai, bekas standard tidak menggunakan pembanding telus. Walau bagaimanapun, dengan menggunakan std::less<> atau pembanding lutsinar lain apabila membuat instantiat bekas bersekutu, kefungsian baharu boleh didayakan.
Penyelesaian Masalah
Pembanding lutsinar membenarkan bekas bersekutu melakukan carian dengan kekunci yang boleh ditukar kepada jenis kunci bekas. Ini sangat meluaskan fleksibiliti dan kegunaan bekas bersekutu, terutamanya dalam senario di mana carian heterogen diperlukan.
Kesimpulan
Pengenalan pembanding telus dalam C 14 memberikan yang berkuasa mekanisme untuk carian heterogen dalam bekas bersekutu. Dengan menggunakan pembanding yang telus, pembangun boleh memanfaatkan fleksibiliti dan kemudahan yang mereka tawarkan.
Atas ialah kandungan terperinci Bagaimanakah Pembanding Telus Meningkatkan Carian Heterogen dalam Bekas Bersekutu C 14?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!