Quelle est la bonne façon d'utiliser la plage basée sur C 11 ?
C 11 a introduit une nouvelle façon d'itérer sur les conteneurs en utilisant la plage -basé sur for, qui est plus concis et plus facile à lire que les boucles for traditionnelles. Cependant, il y a quelques règles à suivre pour l'utiliser correctement.
Lorsque vous utilisez le for basé sur une plage, vous spécifiez le type de variable sur laquelle vous souhaitez parcourir, suivi de deux points (:), puis du conteneur dans lequel vous souhaitez parcourir. Par exemple :
for (int i : {1, 2, 3}) { // Do something with i } // Iterate over a vector of strings for (string s : my_vector) { // Do something with s }
La variable que vous spécifiez dans l'instruction for se voit automatiquement attribuer la valeur de chaque élément du conteneur au fur et à mesure que vous le parcourez. Cela rend très pratique l'itération sur des collections de données.
Quelle syntaxe doit être utilisée ? for (auto elem : conteneur), for (auto& elem : conteneur), ou for (const auto& elem : conteneur) ?
La syntaxe que vous devez utiliser dépend si vous souhaitez modifier les éléments dans la collection ou non. Si vous souhaitez modifier les éléments, vous devez utiliser for (auto& elem : conteneur). Si vous ne souhaitez pas modifier les éléments, vous pouvez utiliser soit for (auto elem : containers) soit for (const auto& elem : containers).
Utiliser auto dans l'instruction for signifie que le compilateur va automatiquement en déduire le type de la variable. C'est pratique, mais cela peut parfois conduire à des erreurs si le compilateur ne peut pas déduire correctement le type. Si vous n'êtes pas sûr du type de la variable, il est plus sûr de la spécifier explicitement.
L'utilisation de const dans l'instruction for signifie que la variable ne peut pas être modifiée dans la boucle. Ceci est utile si vous souhaitez vous assurer que les éléments de la collection ne sont pas modifiés accidentellement.
Exemple :
// Modify the elements in a vector vector<int> my_vector = {1, 2, 3, 4, 5}; for (auto& elem : my_vector) { elem *= 2; } // Do something with the modified vector for (auto elem : my_vector) { cout << elem << endl; } // Iterate over a vector of const strings const vector<string> my_const_vector = {"Hello", "World", "!"}; for (const auto& elem : my_const_vector) { // Do something with elem cout << elem << endl; }
Dans le premier exemple, nous modifions le éléments du vecteur en les multipliant par 2. Dans le deuxième exemple, nous parcourons un vecteur const de chaînes et imprimons chaque élément. Notez que nous ne pouvons pas modifier les éléments d'un vecteur const.
Conclusion :
Range-based for est un outil puissant qui peut rendre votre code plus concis et plus facile à lire. En suivant les règles décrites ci-dessus, vous pouvez utiliser correctement la méthode basée sur une plage pour parcourir des collections de données.
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!