vector
Функция size()
возвращает значение типа size_t
, которое не имеет знака.Таким образом, если size()
вернет 0 и вы вычтете из него 1, вы получите очень большое число, а не -1.Это очень большое число будет больше 0, и поэтому условие i < v.size() - 1
будет истинным, поскольку i
равно 0.
РЕДАКТИРОВАТЬ :
Возможно, мне следуетдобавьте, что обычно при итерации по массиву или vector
вы выполняете итерацию, пока ваш индекс меньше размера массива или vector
, а не размера - 1.
for(int i = 0; i < v.size(); ++i)
std::cout << "done" << endl;
, скорее всего,будь тем, кем ты действительно хочешь заниматься.Даже если вы использовали (int)v.size() - 1
, чтобы избавиться от проблемы со знаком и неподписанным, цикл все равно будет неправильным, потому что вы пропустите последний элемент в тех случаях, когда у вас действительно есть элементы в vector
.