Heim > Backend-Entwicklung > C++ > Ist die Copy-on-Write-Implementierung von std::string in C 11 zulässig?

Ist die Copy-on-Write-Implementierung von std::string in C 11 zulässig?

Susan Sarandon
Freigeben: 2024-12-25 14:32:11
Original
294 Leute haben es durchsucht

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

Legalität der COW std::string-Implementierung in C 11

In früheren Versionen von C war Copy-on-Write (COW). eine praktikable Implementierungsstrategie für std::string. Es wurden jedoch Bedenken hinsichtlich seiner Gültigkeit in C 11 geäußert. Dieser Artikel untersucht die Rechtmäßigkeit von COW-basierten std::string-Implementierungen in C 11.

Frage: Verbietet C 11 dies ausdrücklich? COW-basierte std::string-Implementierungen?

Antwort:Nein, C 11 gibt nicht ausdrücklich an, dass COW-basierte Implementierungen verboten sind.

Frage: Wenn nicht, wie ist diese Einschränkung impliziert?

Antwort: Die Die Einschränkung ergibt sich aus den neuen Anforderungen in C 11 bezüglich der Iterator- und Referenz-Invalidierung. Gemäß Abschnitt 21.4.1 p6 des Standards ist eine Invalidierung nur in bestimmten Fällen zulässig:

  • Übergabe als Argument an bestimmte Standardbibliotheksfunktionen, die nicht konstante Basic_String-Referenzen akzeptieren.
  • Aufrufen nicht konstanter Memberfunktionen, mit Ausnahme von Operator[], at, front, back, begin, rbegin, end und rend.

In einer COW-String-Implementierung würde der Aufruf eines nicht konstanten Operators[] eine Kopie- und Referenzungültigmachung erfordern. Der oben genannte Absatz verbietet dies jedoch. Daher sind COW std::string-Implementierungen in C 11 nicht mehr zulässig.

Das obige ist der detaillierte Inhalt vonIst die Copy-on-Write-Implementierung von std::string in C 11 zulässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage