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 unsignedvariable me semble un peu effrayante et je sais que les unsignedvariables peuvent être dangereuses si elles ne sont pas utilisées correctement, alors - est-ce correct?
.size()n'est pas de type unsignedaka unsigned int. C'est de type std::size_t.
std::size_test un typedef défini par _implementation. Voir la norme. std::size_tpeut être équivalent à unsignedvotre 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_ten pratique. Pensez-vous que nous avons tout couvert encore dans ce flux de commentaires décousus sur 6 ans?