Maison > développement back-end > C++ > La norme C 11 interdit-elle les implémentations de copie sur écriture pour « std :: string » ?

La norme C 11 interdit-elle les implémentations de copie sur écriture pour « std :: string » ?

Barbara Streisand
Libérer: 2024-12-19 07:04:14
original
995 Les gens l'ont consulté

Does C  11 Standard Prohibit Copy-on-Write Implementations for `std::string`?

Légalité de l'implémentation de la copie sur écriture (COW) dans std::string de C 11

Il est communément admis que La copie sur écriture (COW) n'est pas un moyen autorisé de réaliser une implémentation conforme de std::string en C 11. Cependant, des discussions récentes ont remis en question cette idée. notion.

C 11 interdit-il les implémentations COW de std::string ?

Oui, les implémentations COW de std::string sont interdites en C 11.

Stipulations standards

La restriction est explicitement indiqué dans la norme C 11 (section 21.4.1 p6) :

"L'invalidation des itérateurs/références n'est autorisée que pour :

  • En tant qu'argument à n'importe quelle fonction de bibliothèque standard prenant une référence à basic_string non-const comme argument.
  • Appel d'un membre non-const fonctions, sauf opérateur[], at, front, back, start, rbegin, end et rend.*"

Implication pour COW

Pour un Chaîne COW, appeler l'opérateur non const[] nécessiterait la création d'une copie (ce qui invaliderait les références). Cependant, cette action est interdite par la norme, ce qui rend les implémentations COW de std::string non conformes 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