Boucle for basée sur une plage sur un tableau transmis à une fonction non principale
Lors du passage d'un tableau en tant qu'argument à une fonction non principale fonction, les boucles for basées sur la plage peuvent échouer en raison de la perte des informations de taille. Voici comment résoudre ce problème :
Dans le code fourni, lors du passage de bar à foo, il se désintègre en pointeur, perdant sa taille. Pour préserver la taille du tableau, nous pouvons le passer par référence en utilisant un type de référence de tableau :
<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; } }
Alternativement, nous pouvons utiliser une approche générique avec une fonction modèle qui accepte automatiquement les tableaux de n'importe quelle taille :
<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>
En préservant les informations sur la taille du tableau, les boucles for basées sur une plage peuvent être utilisées avec succès lors de la transmission de tableaux aux fonctions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!