Qual è il modo corretto di iterare su un vettore in C ++?
Considera questi due frammenti di codice, questo funziona benissimo:
for (unsigned i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
e questo:
for (int i=0; i < polygon.size(); i++) {
sum += polygon[i];
}
che genera warning: comparison between signed and unsigned integer expressions.
Sono nuovo nel mondo del C ++, quindi la unsignedvariabile mi sembra un po 'spaventosa e so che le unsignedvariabili possono essere pericolose se non utilizzate correttamente, quindi - è corretto?
.size()non è di tipo unsignedaka unsigned int. È di tipo std::size_t.
std::size_tè un typedef definito da _implementation. Vedi lo standard. std::size_tpotrebbe essere equivalente unsignedall'implementazione corrente, ma non è pertinente. Fingere che sia può comportare un codice non portatile e un comportamento indefinito.
std::size_tin pratica. Pensi che abbiamo coperto tutto ancora in questo flusso sconclusionato di commenti per oltre 6 anni?