非メイン関数に渡される配列の範囲ベースの for ループ
C では、範囲ベースの for ループは次のようになります。配列を反復処理するために使用されます。ただし、配列がメイン関数以外に渡されると、配列はポインターに変化し、サイズ情報が失われます。
この問題を解決し、範囲ベースの for ループの使用を有効にするには、配列ポインタとして渡されるのではなく、参照される必要があります。これにより、配列のサイズ情報が保持されます。正しいアプローチを示す変更された例を次に示します。
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;
}
}
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3