Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Pembanding Telus Mendayakan Carian Heterogen dalam Bekas Bersekutu C?

Bagaimanakah Pembanding Telus Mendayakan Carian Heterogen dalam Bekas Bersekutu C?

DDD
Lepaskan: 2024-12-23 02:55:13
asal
214 orang telah melayarinya

How Do Transparent Comparators Enable Heterogeneous Lookup in C   Associative Containers?

Pembanding Telus untuk Bekas Bersekutu C

Memahami Konsep Pembanding Telus

Dalam C 14, bekas bersekutu memperkenalkan konsep baharu yang dikenali sebagai "pembanding telus." Mengikut piawaian, templat fungsi ahli mencari, mengira, menghadkan_bawah, menghadkan_ atas dan julat_sama hanya mengambil bahagian dalam resolusi beban lampau jika jenis Compare::is_transparent wujud.

Pembanding lutsinar ialah jenis yang mentakrifkan is_transparent bersarang. taip. Jenis ini memberi isyarat kepada bekas bersekutu bahawa ia harus menganggap pembanding itu telus untuk carian heterogen. Hasilnya, bekas itu kini boleh melakukan perbandingan antara jenis kunci bekas dan jenis berbeza yang setanding dengan jenis kunci.

Faedah Pembanding Telus

Pembanding Lutsinar menyelesaikan masalah carian heterogen dalam bekas bersekutu. Secara tradisinya, bekas hanya boleh dicari dengan kunci jenis yang sama seperti jenis kunci bekas. Dengan pembanding telus, bekas boleh dicari dengan nilai yang setanding dengan jenis kunci tetapi tidak semestinya daripada jenis yang sama.

Melaksanakan Pembanding Telus

C 14 menyediakan templat perpustakaan dipanggil kurang, yang boleh digunakan untuk menentukan pembanding telus. Templat yang kurang mempunyai pelaksanaan lalai yang mengkhususkan void dan membenarkan sebarang jenis dibandingkan. Dengan menyatakan std::less, di mana Cmp ialah pembanding telus, bekas bersekutu boleh mendayakan carian heterogen.

Kesan ke atas Bekas Standard

Pengenalan pembanding lutsinar mengubah tingkah laku bekas bersekutu hanya jika pembanding lutsinar digunakan. Secara lalai, bekas mengekalkan tingkah laku asalnya. Apabila menggunakan pembanding lutsinar, seperti std::less, bekas memperoleh keupayaan untuk melakukan carian heterogen.

Dalam contoh yang disediakan, std::set akan mempunyai pembanding telus, membenarkan carian heterogen, manakala std::set> tidak akan.

Atas ialah kandungan terperinci Bagaimanakah Pembanding Telus Mendayakan Carian Heterogen dalam Bekas Bersekutu C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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