Maison > développement back-end > C++ > Dois-je utiliser une variable d'index signée ou non signée lors d'une itération sur un std :: vector ?

Dois-je utiliser une variable d'index signée ou non signée lors d'une itération sur un std :: vector ?

Patricia Arquette
Libérer: 2024-11-11 22:46:03
original
295 Les gens l'ont consulté

Should I Use a Signed or Unsigned Index Variable When Iterating Over a std::vector?

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];
}
Copier après la connexion

Cependant, ce code générerait un avertissement :

for (int i = 0; i < polygon.size(); i++) {
    sum += polygon[i];
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal