ホームページ >バックエンド開発 >C++ >コピーオンライト std::string 実装は C 11 で合法ですか?

コピーオンライト std::string 実装は C 11 で合法ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-20 00:43:09897ブラウズ

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

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

COW であると信じられていたかもしれませんが、これは C 11 に準拠した std::string を実装するための実現可能な手法ではないため、最近の議論により不確実性が高まっています。以下では、新しい標準に基づいてこの仮定の妥当性を検討します。

C 11 での COW ベースの std::string 実装の禁止

C 11 は COW を明示的に禁止していますstd::string の -ベースの実装。この制限は、標準のセクション 21.4.1 p6 に記載されており、特定の状況でのみ反復子/参照の無効化が許可されます。

  • 非オブジェクトへの参照を受け入れる標準ライブラリ関数の引数として-const Basic_string.
  • operator[]、at、front、back、begin、rbegin、を除く非 const メンバー関数の呼び出し

COW 文字列で非 const 演算子[] を呼び出すと、コピーの作成 (参照の無効化) が必要になりますが、これは前述の段落で禁止されています。したがって、この制約により、C 11 では COW 文字列が禁止されています。

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

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