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
Susan SarandonOriginal
2024-12-25 14:32:11295Durchsuche

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!

Stellungnahme:
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