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

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

Susan Sarandon
リリース: 2024-12-25 14:32:11
オリジナル
246 人が閲覧しました

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

C 11 での COW std::string 実装の合法性

以前のバージョンの C では、コピーオンライト (COW) はstd::string の実行可能な実装戦略。ただし、C 11 での有効性については懸念が生じています。この記事では、C 11 における COW ベースの std::string 実装の合法性を検証します。

質問: C 11 は明示的に禁止していますか? COW ベースの std::string 実装?

答え:いいえ、C 11 では、COW ベースの実装が禁止されていることは明示的に述べられていません。

質問: そうでない場合、この制限はどのように暗示されますか?

回答: この制限は、反復子と参照の無効化に関する C 11 の新しい要件から生じます。標準のセクション 21.4.1 p6 によると、無効化は特定の場合にのみ許可されます。

  • 非 const の Basic_string 参照を受け入れる特定の標準ライブラリ関数に引数として渡す。
  • operator[]、at、front、back、begin、rbegin、end、およびを除く非 const メンバー関数の呼び出しrend.

COW 文字列実装では、非 const 演算子 [] を呼び出すと、コピーと参照の無効化が必要になります。ただし、前項ではこれを禁止しています。したがって、COW std::string 実装は C 11 では許可されなくなりました。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート