Rumah > pembangunan bahagian belakang > C++ > Adakah Pelaksanaan Salin Atas Tulis `std::string` Sah dalam C 11?

Adakah Pelaksanaan Salin Atas Tulis `std::string` Sah dalam C 11?

Patricia Arquette
Lepaskan: 2024-12-15 03:28:08
asal
811 orang telah melayarinya

Is a Copy-on-Write Implementation of `std::string` Legal in C  11?

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:

  • Apabila diserahkan sebagai hujah kepada fungsi perpustakaan standard yang mengambil rujukan kepada rentetan_basikal bukan const.
  • Apabila memanggil fungsi bukan ahli tetap, tidak termasuk operator[], di, depan, belakang, mula, mulakan, tamatkan dan pecahkan.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan