ホームページ >バックエンド開発 >C++ >C 11 標準は `std::string` のコピーオンライト実装を禁止していますか?

C 11 標準は `std::string` のコピーオンライト実装を禁止していますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-19 07:04:14927ブラウズ

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

C 11 の std::string でのコピーオンライト (COW) 実装の合法性

これは一般的に信じられてきました。コピーオンライト (COW) は、C で std::string の準拠した実装を実現する方法としては許可されていません11. しかし、最近の議論ではこの概念に異議が唱えられています。

Does C 11 Prohibit COW Implementations of std::string?

はい、COW ベースの std 実装です。 :string は C 11 では禁止されています。

標準規定

この制限は、C 11 標準 (セクション 21.4.1 p6):

"反復子/参照の無効化は次の場合にのみ許可されます: >

  • 標準ライブラリ関数の引数として引数としての非 const の Basic_string への参照。
  • operator[]、at、front、back、begin、rbegin、end、および rend を除く非 const メンバー関数の呼び出し。*"

COW への影響

COW 文字列の場合、非 const 演算子 [] では、コピーを作成する必要があります (参照が無効になります)。ただし、このアクションは標準で禁止されており、std::string の COW 実装が C 11 に準拠していません。

以上がC 11 標準は `std::string` のコピーオンライト実装を禁止していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。