Maison > développement back-end > C++ > L'implémentation de copie sur écriture de std::string est-elle légale en C 11 ?

L'implémentation de copie sur écriture de std::string est-elle légale en C 11 ?

Susan Sarandon
Libérer: 2024-12-25 14:32:11
original
294 Les gens l'ont consulté

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

Légalité de COW std::string Implémentation en C 11

Dans les versions antérieures de C, la copie sur écriture (COW) était une stratégie de mise en œuvre viable pour std::string. Cependant, des inquiétudes ont été soulevées quant à sa validité en C 11. Cet article examine la légalité des implémentations std::string basées sur COW en C 11.

Question : C 11 interdit-il explicitement Implémentations de std::string basées sur COW ?

Réponse : Non, C 11 n'indique pas explicitement que les implémentations basées sur COW sont interdites.

Question :Sinon, comment cette restriction est-elle implicite ?

Réponse :Le Cette restriction découle des nouvelles exigences de C 11 concernant l’invalidation des itérateurs et des références. Selon la section 21.4.1 p6 de la norme, l'invalidation n'est autorisée que dans des cas spécifiques :

  • Passage en argument à des fonctions de bibliothèque standard spécifiques qui acceptent des références basic_string non const.
  • Appel de fonctions non membres const, à l'exclusion de l'opérateur [], at, front, back, start, rbegin, end et rend.

Dans une implémentation de chaîne COW, l'appel d'un opérateur non const[] nécessiterait une copie et une invalidation de référence. Toutefois, le paragraphe susmentionné l’interdit. Par conséquent, les implémentations COW std::string ne sont plus autorisées en C 11.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal