Qual é a maneira correta de iterar sobre um vetor em C ++?
Considere estes dois fragmentos de código, este funciona bem:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
e este:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
que gera warning: comparison between signed and unsigned integer expressions.
Eu sou novo no mundo do C ++, então a unsignedvariável me parece um pouco assustadora e sei que as unsignedvariáveis podem ser perigosas se não forem usadas corretamente, então - isso está correto?
.size()não é do tipo unsignedaka unsigned int. É do tipo std::size_t.
std::size_té um typedef definido por _implementation. Veja o padrão. std::size_tpode ser equivalente à unsignedsua implementação atual, mas isso não é relevante. Fingir que é pode resultar em código não portátil e comportamento indefinido.
std::size_tna prática. Você acha que já cobrimos tudo nesse fluxo de comentários durante seis anos?