非メイン関数に渡される配列の範囲ベースの for ループ
配列を引数として非メイン関数に渡す場合関数を使用すると、サイズ情報の損失により範囲ベースの for ループが失敗する可能性があります。この問題を解決する方法は次のとおりです。
提供されたコードでは、bar を foo に渡すと、ポインターに減衰し、サイズが失われます。配列サイズを保持するには、配列参照型を使用して配列サイズを参照によって渡すことができます:
<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; } }
あるいは、任意のサイズの配列を自動的に受け入れるテンプレート関数を使用した一般的なアプローチを使用することもできます:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { for (int i : bar) { cout << i << endl; } } int main() { int bar[3] = {1, 2, 3}; for (int i : bar) { cout << i << endl; } foo(bar); }</code>
配列のサイズ情報を保持することで、配列を関数に渡すときに範囲ベースの for ループを正常に使用できます。
以上がC で非メイン関数に渡される配列で範囲ベースの For ループを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。