Если у меня есть целочисленный вектор
vector<int> vec;
и я зациклить следующим образом
for(int i=0; i<vec.size(); i++)
{
// do something
}
Я получаю подписанное / неподписанное предупреждение о несоответствии.
Конечно могу заявить i
типа size_t
решить проблему.
Но если я продолжу i
как int
Могу ли я получить некоторые проблемы во время выполнения?
Конечно если vec.size()
больше, чем максимальное значение для целого числа со знаком.
Вы можете найти максимальные значения в limits.h
в этот стол.
Используйте вектор iterator
вместо.
vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it)
{
//do something
}
Да. Для больших чисел больше значения, которое signed
может хранить, это будет неопределенное поведение.
Однако для небольших номеров, которые можно хранить в signed
все нормально.