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 unsigned
variável me parece um pouco assustadora e sei que as unsigned
variáveis podem ser perigosas se não forem usadas corretamente, então - isso está correto?
.size()
não é do tipo unsigned
aka unsigned int
. É do tipo std::size_t
.
std::size_t
é um typedef definido por _implementation. Veja o padrão. std::size_t
pode ser equivalente à unsigned
sua implementação atual, mas isso não é relevante. Fingir que é pode resultar em código não portátil e comportamento indefinido.
std::size_t
na prática. Você acha que já cobrimos tudo nesse fluxo de comentários durante seis anos?