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

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

Patricia Arquette
リリース: 2024-12-29 20:19:12
オリジナル
302 人が閲覧しました

How Can I Correctly Use Range-Based For Loops in C  11?

C 11 で範囲ベースの for ループを正しく使用する方法

範囲ベースの for ループは、C 11 で導入された簡潔で強力な反復子トラバーサル メカニズムです。 C11が導入されました。これは、コンテナーまたはその他の反復可能なシーケンスを反復し、1 つ以上の変数を通じてシーケンス内の要素を参照するために使用されます。範囲ベースの for ループを正しく使用する方法は次のとおりです。

構文

for (auto elem : container) {
  // 代码体
}
ログイン後にコピー

ここで、

  • auto キーワードは、コンパイラが自動的に推論することを意味します。要素タイプ。
  • elem は、ループ内の要素の反復子変数です。
  • container は、反復されるコンテナーまたは反復可能なシーケンスです。

要素キャプチャ モード

範囲ベースの for ループを使用する場合、次の 3 つの要素キャプチャ モードのいずれかを選択できます:

  1. 値のキャプチャ (自動要素) を押します: 要素のローカル コピーを作成します。これは、要素のコピーが安価な型 (int、double など) に対して機能します。
  2. 参照によるキャプチャ (auto&elem): コンテナ内の要素を直接参照します。これは、コピーを避ける必要がある要素または型を変更するために使用されます。
  3. 参照によるプロキシのキャプチャ (auto&&elem): 「プロキシ反復子」(例: std::vector) を使用してコンテナを走査します。

観察または変更

範囲ベースの for ループは、次の 2 つの主な目的に使用できます。

  1. 観察 要素: 使用します。 const auto&elem は、元の要素が変更されないように要素をキャプチャします。
  2. 要素を変更する: auto&elem を使用して要素をキャプチャし、元の要素を直接変更します。

ガイドライン

範囲ベースのオブジェクトを正しく使用するにはループの場合は、次のガイドラインを考慮してください:

  • 監視された要素の場合:
for (const auto& elem : container) // 按引用捕获常量
ログイン後にコピー
  • 変更された要素の場合:
を使用します。
for (auto& elem : container) // 按引用捕获
ログイン後にコピー
  • コンテナが「プロキシ」を使用する場合Iterator"、使用:
for (auto&& elem : container) // 按引用捕获 proxy
ログイン後にコピー

汎用コードでの注意

汎用コードでは、観察用の要素を取得するには const auto&elem を使用し、auto&& ;elem は、これらのメソッドがさまざまなタイプのコンテナおよび要素で動作するため、変更するために要素をキャプチャします。

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

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