¿Cuál es la forma correcta de iterar sobre un vector en C ++?
Considere estos dos fragmentos de código, este funciona bien:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
y éste:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
que genera warning: comparison between signed and unsigned integer expressions
.
Soy nuevo en el mundo de C ++, por lo que la unsigned
variable me parece un poco aterradora y sé que las unsigned
variables pueden ser peligrosas si no se usan correctamente, entonces, ¿es esto correcto?
.size()
no es del tipo unsigned
aka unsigned int
. Es de tipo std::size_t
.
std::size_t
es una definición de tipo definida por la implementación. Ver el estándar. std::size_t
puede ser equivalente a unsigned
en su implementación actual, pero eso no es relevante. Fingir que puede resultar en código no portátil y comportamiento indefinido.
std::size_t
en la práctica. ¿Crees que ya hemos cubierto todo en este torrente de comentarios durante más de 6 años?