Itération sur std::vector : variable d'index signée ou non signée
Lors d'une itération sur un vecteur en C, vous pouvez utiliser soit un signé ou variable d'index non signée. Cependant, il existe quelques différences subtiles à prendre en compte.
L'utilisation d'une variable d'index non signée est généralement préférable car elle élimine la possibilité d'un index négatif, ce qui entraînerait un comportement indéfini. Par exemple, ce code fonctionne bien :
for (unsigned i = 0; i < polygon.size(); i++) { sum += polygon[i]; }
Cependant, ce code générerait un avertissement :
for (int i = 0; i < polygon.size(); i++) { sum += polygon[i]; }
L'avertissement se produit car la comparaison i < polygon.size() se situe entre une expression entière signée et non signée. Cela peut entraîner un comportement inattendu dans certains cas.
Par conséquent, il est préférable de toujours utiliser une variable d'index non signée lors d'une itération sur un vecteur.
Vous pouvez également préférer utiliser des itérateurs au lieu d'index. . Les itérateurs offrent un moyen plus abstrait d’accéder aux éléments d’un vecteur et peuvent vous aider à éviter de commettre des erreurs. Par exemple, vous pouvez utiliser le code suivant pour parcourir un vecteur :
for (std::vector<int>::iterator it = polygon.begin(); it != polygon.end(); ++it) { sum += *it; }
En général, il est considéré comme une bonne pratique d'utiliser des itérateurs plutôt que des indices lors d'une itération sur un vecteur.
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!