Можно ли использовать int вместо size_t в цикле по вектору?

Если у меня есть целочисленный вектор

vector<int> vec;

и я зациклить следующим образом

for(int i=0; i<vec.size(); i++)
{
// do something
}

Я получаю подписанное / неподписанное предупреждение о несоответствии.

Конечно могу заявить i типа size_t решить проблему.
Но если я продолжу i как int Могу ли я получить некоторые проблемы во время выполнения?

0

Решение

Конечно если vec.size() больше, чем максимальное значение для целого числа со знаком.

Вы можете найти максимальные значения в limits.h в этот стол.

2

Другие решения

Используйте вектор iterator вместо.

vector<int>::iterator it;
for (it = vec.begin(); it!= vec.end(); ++it)
{
//do something
}
3

Да. Для больших чисел больше значения, которое signed может хранить, это будет неопределенное поведение.

Однако для небольших номеров, которые можно хранить в signed все нормально.

2
По вопросам рекламы [email protected]