Avertissement C ++ C4018: ‘<': incompatibilité signée / non signée

Ce code jette des avertissements lorsque je le comstack sous Windows. Des solutions?

#include int main(){ std::vector v; //... for (int i = 0; i < v.size(); ++i) { //warning on this line //... } } 

Remplacez toutes les définitions de int i par size_t i .

std::vector::size() retourne le type size_t qui est non signé (car cela n’a pas de sens que les conteneurs contiennent un nombre négatif d’éléments).

Dites std::size_t i = 0; :

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

Vous pouvez également utiliser des iterators à la place pour éviter le risque d’avertissement:

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

Ou si vous utilisez C ++ 11:

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