Quelle est la bonne façon d'itérer sur un vecteur en C ++?
Considérez ces deux fragments de code, celui-ci fonctionne très bien:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
et celui-là:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
qui génère warning: comparison between signed and unsigned integer expressions
.
Je suis nouveau dans le monde du C ++, donc la unsigned
variable me semble un peu effrayante et je sais que les unsigned
variables peuvent être dangereuses si elles ne sont pas utilisées correctement, alors - est-ce correct?
.size()
n'est pas de type unsigned
aka unsigned int
. C'est de type std::size_t
.
std::size_t
est un typedef défini par _implementation. Voir la norme. std::size_t
peut être équivalent à unsigned
votre implémentation actuelle, mais ce n'est pas pertinent. Le faire semblant peut entraîner un code non portable et un comportement indéfini.
std::size_t
en pratique. Pensez-vous que nous avons tout couvert encore dans ce flux de commentaires décousus sur 6 ans?