ホームページ >バックエンド開発 >C++ >C 11 で範囲ベースの For ループを効果的に使用するにはどうすればよいですか?

C 11 で範囲ベースの For ループを効果的に使用するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 08:13:09848ブラウズ

How Do I Effectively Use Range-Based For Loops in C  11?

C 11 の範囲ベースの for ループ

構文と使用法

C 11 では、簡潔かつ表現力豊かな方法として範囲ベースの for ループが導入されました。コンテナを反復処理します。構文は次のとおりです。

for (range_declaration : container) {
  // body of the loop
}

  • range_declaration は、コンテナの各要素を保持する変数を宣言します。
  • コンテナは、反復するコンテナです。

参照によるキャプチャまたはValue

range_declaration 内の変数は、次の構文を使用して参照または値によって取得できます。

  • auto は値によって要素を取得します。
  • auto& は要素を取得します非 const 参照による。
  • const auto& 要素を const でキャプチャします。参照。

要素を変更する必要がない観察には、 const auto& を使用する必要があります。これにより、不要なコピーが防止され、元の要素が変更されないことが保証されます。

要素を変更したい場合は、auto& を使用してください。

プロキシ反復子 (std::vector など) をキャプチャするには auto&& を使用する必要があります。

範囲ベースの For を使用するためのガイドライン

範囲ベースの For を使用する場合は、次のガイドラインを考慮してください。

  • 要素を観察する場合:

      for (const auto& elem : コンテナ) (const によるキャプチャ)参照)
    • 要素のコピーが安価な場合 (int など)、for (auto elem :container) (値によるキャプチャ) を使用できます。
  • 要素を変更する場合:

      for (auto& elem :container) (キャプチャ)非 const 参照による)
    • プロキシ反復子 (std::vector など) の場合、for (auto&& elem :container) を使用します (&& によってキャプチャ)。
汎用コード考慮事項

反復される要素の型がわからない汎用コードでは、要素を観察するために

    for (const auto& elem :container) を使用します。
  • for (auto&& elem :container) 要素を変更するため (通常とプロキシの両方で機能します)イテレータ).

以上がC 11 で範囲ベースの For ループを効果的に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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