2011-11-18 3 views

Odpowiedz

44

Wymień wszystkie definicje int i z size_t i.

std::vector<T>::size() zwraca typ size_t, który jest niepodpisany (ponieważ nie ma sensu, aby pojemniki zawierały ujemną liczbę elementów).

+1

To jest zły pomysł, ponieważ -3 int będzie większe niż size_t 31 z twoim rozwiązaniem. Chociaż to rozwiązanie działa na obecny przykład, może to prowadzić do trudnych do debugowania błędów w innych przypadkach. – Sergei

6

Say std::size_t i = 0;:

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

Można także użyć zamiast iteratory, aby uniknąć możliwości ostrzeżenia sumie:

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

Lub jeśli używasz C++ 11:

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