C での std::string の COW 実装 11: 合法性と制限
コピーオンライト (COW) はよく使われる手法です実際に変更されるまで新しいオブジェクトの作成コストを延期することでパフォーマンスを向上させるために使用されます。ただし、COW が C 11 で std::string を実装するための有効なアプローチであるかどうかは疑問視されています。
COW 実装の制限
C 11 標準による(21.4.1 p6)、反復子と参照の無効化は特定の場合にのみ許可されます。状況:
COW 文字列実装の場合、以下を呼び出します。非 const 演算子 [] の場合は、コピーを作成して参照を無効にする必要があります。これは前項により禁止されております。その結果、COW に基づいて std::string を実装することは、C 11 では合法とみなされなくなりました。
明示的な制限事項
標準では明示的に規定されていません。 COW ベースの std::string 実装は禁止されています。ただし、この制限は、無効化シナリオを明示的に制限する要件の組み合わせによって暗黙的に示されます。
結論
以前のバージョンでは COW は std::string の実行可能な実装でしたが、 C の仕様では、参照の無効化が禁止されているため、C 11 仕様では COW ベースの実装を禁止する制約が導入されています。
以上が`std::string` のコピーオンライト実装は C 11 で合法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。