C 11 では、範囲ベースのループや std::for_each など、コンテナーの反復のためのさまざまなメソッドが提供されます。ただし、次のような同じサイズの複数のコンテナを反復処理する場合、どのアプローチが最も効果的ですか。
for(unsigned i = 0; i < containerA.size(); ++i) { containerA[i] = containerB[i]; }
推奨されるアプローチは、次を使用してインデックスを反復することです。範囲ベースの for ループ:
for(unsigned i : indices(containerA)) { containerA[i] = containerB[i]; }
ここで、インデックスは、インデックスの遅延範囲。この方法は、手動 for ループの効率と一致します。
このパターンが頻繁に発生する場合は、zip 関数を使用して、ペアの要素を組み合わせたタプルの範囲を作成することを検討してください。 :
for (auto& [a, b] : zip(containerA, containerB)) { a = b; }
このアプローチにより、コードが簡素化され、可読性が向上します。
以上がC で複数のコンテナを同時に反復処理する最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。