Was ist die richtige Methode zum Iterieren über einen Vektor in C ++?
Betrachten Sie diese beiden Codefragmente, dieses funktioniert gut:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
und das hier:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
was erzeugt warning: comparison between signed and unsigned integer expressions.
Ich bin neu in der Welt von C ++, daher unsignedsieht die Variable für mich etwas beängstigend aus und ich weiß, dass unsignedVariablen gefährlich sein können, wenn sie nicht richtig verwendet werden. Ist das also richtig?
.size()ist nicht vom Typ unsignedaka unsigned int. Es ist vom Typ std::size_t.
std::size_tist ein _implementierungsdefinierter Typedef. Siehe den Standard. std::size_tDies entspricht möglicherweise unsignedIhrer aktuellen Implementierung, ist jedoch nicht relevant. Das Vorgeben, dies zu tun, kann zu nicht portierbarem Code und undefiniertem Verhalten führen.
std::size_tin der Praxis ist. Denken Sie, wir haben in diesem weitläufigen Strom von Kommentaren über 6 Jahre alles bisher behandelt?