Pelaksanaan std::string dalam C 11: Legaliti dan Sekatan
Copy-on-write (COW) adalah teknik yang sering digunakan untuk meningkatkan prestasi dengan menangguhkan kos mencipta objek baharu sehingga ia benar-benar diubah suai. Walau bagaimanapun, ia telah dipersoalkan sama ada COW adalah pendekatan yang sah untuk melaksanakan std::string dalam C 11.
Sekatan terhadap Pelaksanaan LEMBU
Mengikut standard C 11 (21.4.1 p6), pembatalan iterator dan rujukan hanya dibenarkan dalam keadaan:
Untuk pelaksanaan rentetan LEMBU, menggunakan pengendali bukan const[] akan memerlukan membuat salinan dan rujukan yang tidak sah. Ini dilarang oleh perenggan yang disebutkan di atas. Akibatnya, melaksanakan std::string berdasarkan COW tidak lagi dianggap sah dalam C 11.
Pernyataan Sekatan Eksplisit
Standard tidak menyatakan secara eksplisit bahawa Pelaksanaan std::string berasaskan COW adalah dilarang. Walau bagaimanapun, sekatan itu tersirat oleh gabungan keperluan yang mengehadkan senario ketidaksahihan secara eksplisit.
Kesimpulan
Sementara COW merupakan pelaksanaan yang berdaya maju untuk std::string dalam versi terdahulu daripada C , spesifikasi C 11 memperkenalkan kekangan yang melarang pelaksanaan berasaskan COW disebabkan oleh tidak dibenarkan pembatalan rujukan.
Atas ialah kandungan terperinci Adakah Pelaksanaan Salin Atas Tulis `std::string` Sah dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!