2011-11-18 10 views

risposta

44

sostituire tutte le definizioni di int i con size_t i.

std::vector<T>::size() restituisce il tipo size_t che non è firmato (poiché non ha senso che i contenitori contengano un numero negativo di elementi).

+1

Questa è una cattiva idea, dato -3 int sarebbe più grande di size_t 31 con la tua soluzione. Mentre questa soluzione funziona per l'esempio corrente, questo potrebbe portare a errori di debug in altri casi. – Sergei

6

Di 'std::size_t i = 0;:

for (std::size_t i = 0; i != v.size(); ++i) { /* ... */ } 
5

Si potrebbe anche usare iteratori invece di evitare il rischio di un avvertimento del tutto:

for (std::vector<int>::const_iterator i = v.begin(); i != v.end(); ++i) 
{ 
    ... 
} 

Oppure, se si sta utilizzando C++ 11:

for (int i : v) 
{ 
    ... 
} 
Problemi correlati