非メイン関数に渡される配列の範囲ベースの for ループ
C では、範囲ベースの for ループは次のようになります。配列を反復処理するために使用されます。ただし、配列がメイン関数以外の関数に渡されると、配列はポインターに崩壊し、そのサイズ情報が失われます。
この問題を解決し、範囲ベースの for ループの使用を有効にするには、配列ポインタとして渡されるのではなく、参照される必要があります。これにより、配列のサイズ情報が保持されます。以下は、正しいアプローチを示す変更された例です:
<code class="cpp">void foo(int (&bar)[3]); int main() { int bar[3] = {1,2,3}; for (int i : bar) { cout << i << endl; } foo(bar); } void foo(int (&bar)[3]) { for (int i : bar) { cout << i << endl; } } // Generic implementation template <std::size_t array_size> void foo(int (&bar)[array_size]) { for (int i : bar) { cout << i << endl; } }</code>
以上がC で非メイン関数に渡される配列に対して範囲ベースの for ループを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。