Menggunakan Fungsi mula dan tamat Bukan Ahli dalam C 11
Walaupun wujudnya fungsi ahli bermula dan berakhir dalam bekas standard, C 11 memperkenalkan fungsi bukan ahli dengan nama yang sama. Walaupun fungsi percuma ini berfungsi sama seperti rakan ahli mereka, ia menawarkan beberapa kelebihan:
Pengaturcaraan Generik:
Versi bukan ahli membolehkan pengaturcaraan generik dengan membenarkan manipulasi iterator merentas struktur data yang berbeza. Contohnya, anda boleh menggunakannya untuk memproses kedua-dua bekas standard dan tatasusunan C, yang tidak mempunyai fungsi mula dan tamat ahli.
Penyahgandingan daripada Jenis Objek:
Dengan menggunakan fungsi percuma, anda memisahkan kod anda daripada jenis objek tertentu. Ini boleh memberi manfaat apabila bekerja dengan bekas yang mempunyai pelaksanaan alternatif atau bukan standard bagi permulaan dan akhir, membolehkan anda mengendalikan bekas ini secara konsisten tanpa mengetahui jenisnya yang tepat.
Kebolehbacaan yang Dipertingkat:
Fungsi percuma boleh meningkatkan kebolehbacaan kod dengan mengalih keluar nama objek yang tidak diperlukan. Daripada menulis:
<code class="cpp">auto i = v.begin(); auto e = v.end();</code>
Anda boleh menulis:
<code class="cpp">auto i = std::begin(v); auto e = std::end(v);</code>
Ini boleh membantu terutamanya apabila mengendalikan berbilang bekas dalam gelung atau ungkapan kompleks.
Kebolehlanjutan:
Fungsi percuma boleh diperluaskan dengan mudah untuk menyokong bekas tersuai. Seperti yang dinyatakan oleh Herb Sutter, ini boleh menjadi kelebihan untuk bekas bukan standard yang mungkin tidak mempunyai fungsi permulaan dan penamat ahli.
Bila Menggunakan Fungsi Bukan Ahli:
Secara umum, adalah disyorkan untuk menggunakan fungsi std::begin dan std::end bukan ahli apabila:
Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan `std::begin` dan `std::end` Atas Fungsi Ahli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!