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
247 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!

source:php.cn
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