Adakah "&s[0]" Sentiasa Menunjuk kepada Aksara Bersebelahan dalam std::string?
Dalam kod penyelenggaraan, beberapa bacaan tergesa-gesa boleh membawa kepada kebimbangan tentang menggunakan "&s[0]" untuk mengakses aksara dalam std::string. Ini berpunca daripada pengetahuan bahawa, di bawah C 98/03, peruntukan std::string tidak dijamin bersebelahan, tidak seperti dalam std::vector. Walau bagaimanapun, C 11 telah menangani ketidakpastian ini.
Bertentangan dengan standard, pengalaman praktikal menunjukkan bahawa kebanyakan pelaksanaan std::string memperuntukkan storan bersebelahan. Namun begitu, C 11 telah menyelesaikan perkara ini secara muktamad, mewajibkan peruntukan std::string adalah bersebelahan. Ini memastikan bahawa "&s[0]" sentiasa menunjuk kepada rujukan yang sah bagi aksara pertama rentetan, walaupun dalam situasi di mana rentetan itu kosong.
Sementara "&s[0]" kekal sebagai kaedah yang boleh dipercayai untuk mengakses rentetan aksara, kaedah lain seperti "str.begin()" dan "&*str.begin()" tidak dijamin berfungsi secara konsisten di bawah semua konfigurasi standard. Oleh itu, menggunakan "&s[0]" ialah pendekatan yang disyorkan untuk akses terus kepada aksara std::string.
Atas ialah kandungan terperinci Adakah `&s[0]` Sentiasa Menunjuk kepada Aksara Bersebelahan dalam C 11 `std::string`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!