Pembanding Telus: Keupayaan Carian Dipertingkat dalam Bekas Bersekutu
Dalam C 14, perubahan ketara telah diperkenalkan kepada bekas bersekutu. Seperti yang dinyatakan dalam [associative.reqmts]/13, templat fungsi ahli mencari, mengira, batas_bawah, sempadan_atas dan julat_sama hanya mengambil bahagian dalam resolusi beban lampau jika jenis Bandingkan::is_transparent wujud.
Tujuan Pembanding Telus
Tujuan di sebalik membuat pembanding "telus" adalah untuk mengembangkan kefungsian carian bekas bersekutu. Dengan membenarkan pembanding menjadi telus, pembangun boleh menggunakan jenis yang setanding dengan kunci bekas dan bukannya dikekang untuk menggunakan jenis kunci itu sendiri. Ini membolehkan senario carian yang lebih fleksibel dan cekap.
Pelaksanaan dan Penggunaan
C 14 memperkenalkan templat perpustakaan seperti std::less yang memudahkan penciptaan pembanding telus:
template <class T = void> struct less { // ... typedef *unspecified* is_transparent; }; template <> struct less<void> { // ... typedef *unspecified* is_transparent; };
Dalam contoh ini, std::set
Kesan pada Bekas Bersekutu
Terutamanya, perubahan ini tidak memberi kesan kepada pengendalian lalai bekas standard di luar kotak. Mereka akan terus berkelakuan seperti biasa, menggunakan jenis kunci mereka sebagai kriteria perbandingan utama.
Walau bagaimanapun, dengan menggunakan std::less<> pembanding telus atau alternatif lain yang serasi, pembangun boleh membuka kunci kefungsian carian heterogen yang dipertingkat dalam bekas bersekutu. Ini membolehkan mereka melakukan perbandingan menggunakan jenis yang mungkin berbeza daripada jenis kunci bekas, meningkatkan fleksibiliti dan serba boleh.
Atas ialah kandungan terperinci Bagaimanakah Pembanding Telus Meningkatkan Carian dalam Bekas Bersekutu C 14?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!