tutorial - Advertencia de C++ C4018: ''<'': falta de coincidencia firmada/sin firmar
tipo de errores en c++ (3)
Esta pregunta ya tiene una respuesta aquí:
Este código emite advertencias cuando lo compilo bajo Windows. ¿Alguna solución?
#include<vector>
int main(){
std::vector<int> v;
//...
for (int i = 0; i < v.size(); ++i) { //warning on this line
//...
}
}
Diga std::size_t i = 0;
:
for (std::size_t i = 0; i != v.size(); ++i) { /* ... */ }
Reemplace todas las definiciones de int i
con size_t i
.
std::vector<T>::size()
devuelve el tipo size_t
que no está firmado (ya que no tiene sentido que los contenedores contengan un número negativo de elementos).
También puede utilizar iteradores para evitar la posibilidad de una advertencia por completo:
for (std::vector<int>::const_iterator i = v.begin(); i != v.end(); ++i)
{
...
}
O si estás usando C ++ 11:
for (int i : v)
{
...
}