Apabila bekerja dengan kelas tersuai dalam algoritma STL, adalah perlu untuk menyediakan kaedah swap untuk memastikan operasi pertukaran yang cekap. Terdapat tiga pendekatan utama untuk mencapai ini:
Ini melibatkan penentuan fungsi pertukaran ahli dalam kelas itu sendiri. Walaupun pendekatan ini mendayakan carian bergantung hujah (ADL), ia tidak mempunyai sambungan langsung ke SFINAE.
Fungsi swap berdiri bebas boleh ditakrifkan dalam ruang nama yang sama dengan kelas. Fungsi ini akan ditemui melalui ADL apabila kata kunci swap digunakan tanpa kelayakan.
Walaupun mungkin untuk mengkhususkan templat fungsi std::swap untuk kelas tertentu, ini biasanya tidak disyorkan. Sebaliknya, adalah lebih baik untuk menyediakan fungsi swap berdiri bebas dalam ruang nama kelas.
// Using the free-standing swap function approach namespace Foo { class Bar {}; // dummy void swap(Bar& lhs, Bar& rhs) { // ... } } // Algorithm that uses ADL to find the swap function template<class T> void foo(T& lhs, T& rhs) { using std::swap; // enable 'std::swap' if no other 'swap' is found through ADL swap(lhs, rhs); // unqualified call using ADL to find 'Foo::swap' }
Bergantung pada keperluan khusus, terdapat adalah pelbagai pendekatan berdaya maju untuk menyediakan fungsi swap untuk algoritma STL. Untuk kegunaan umum, mentakrifkan fungsi swap berdiri bebas dalam ruang nama kelas menawarkan penyelesaian yang teguh dan fleksibel.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Tukar Objek Kelas Tersuai dengan Cekap dalam Algoritma STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!