Menyesuaikan Swift Swapping dengan std::swap() Overloading
Bekas standard dalam C banyak menggunakan std::swap() untuk operasi seperti pengasingan dan tugasan. Walau bagaimanapun, pelaksanaan generiknya mungkin tidak optimum untuk jenis tersuai, memberikan ruang untuk peningkatan prestasi.
Melebihi beban std::swap()
Untuk meningkatkan kecekapan bagi jenis tersuai , anda boleh membebankan std::swap() dengan versi khusus yang disesuaikan dengan jenis khusus anda. Ini melibatkan pelaksanaan fungsi swap anda sendiri dan mentakrifkannya dalam ruang nama yang sama dengan jenis yang anda tukar. Ini membolehkan fungsi swap ditemui melalui pencarian bergantung hujah (ADL).
Contoh Pelaksanaan
Pertimbangkan contoh beban lampau std::swap() berikut untuk kelas bernama X:
class X { // ... friend void swap(X& a, X& b) { using std::swap; // bring in swap for built-in types swap(a.base1, b.base1); swap(a.base2, b.base2); // ... swap(a.member1, b.member1); swap(a.member2, b.member2); // ... } };
Dalam pelaksanaan ini, pertukaran fungsi:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertukaran Pantas dengan Terlalu Beban `std::swap()` Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!