非メイン関数に渡された配列に対する範囲ベースの for ループ
関数呼び出しで配列をポインターに割り当てる場合、コンパイラはポインタの型を推測し、配列サイズという重要な情報を失います。この不一致により、関数内で範囲ベースの for ループを実行しようとするとエラーが発生します。
この問題に対処する 1 つの解決策は、ポインターの代わりに配列参照を利用することです。そうすることで、関数は配列のサイズに関する情報を保持します:
<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; } }</code>
Byこれらの手法を活用すると、メイン関数以外に渡される配列に対して範囲ベースの for ループを正常に実行できるようになります。
以上がC で非メイン関数に渡される配列で範囲ベースの for ループを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。