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 unsigned
variabile mi sembra un po 'spaventosa e so che le unsigned
variabili possono essere pericolose se non utilizzate correttamente, quindi - è corretto?
.size()
non è di tipo unsigned
aka unsigned int
. È di tipo std::size_t
.
std::size_t
è un typedef definito da _implementation. Vedi lo standard. std::size_t
potrebbe essere equivalente unsigned
all'implementazione corrente, ma non è pertinente. Fingere che sia può comportare un codice non portatile e un comportamento indefinito.
std::size_t
in pratica. Pensi che abbiamo coperto tutto ancora in questo flusso sconclusionato di commenti per oltre 6 anni?