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 unsigned
sieht die Variable für mich etwas beängstigend aus und ich weiß, dass unsigned
Variablen gefährlich sein können, wenn sie nicht richtig verwendet werden. Ist das also richtig?
.size()
ist nicht vom Typ unsigned
aka unsigned int
. Es ist vom Typ std::size_t
.
std::size_t
ist ein _implementierungsdefinierter Typedef. Siehe den Standard. std::size_t
Dies entspricht möglicherweise unsigned
Ihrer aktuellen Implementierung, ist jedoch nicht relevant. Das Vorgeben, dies zu tun, kann zu nicht portierbarem Code und undefiniertem Verhalten führen.
std::size_t
in der Praxis ist. Denken Sie, wir haben in diesem weitläufigen Strom von Kommentaren über 6 Jahre alles bisher behandelt?