Проблема в вашем цикле:
for(int i = 0; i < v.size() -1;++i)
В частности, эта часть условия: v.size() - 1
.
Функция size
возвращаетзначение типа size_type
, которое, если вы прочитаете, например, , это vector
ссылка будет видеть без знака тип.
Это означает, что при вычитании 1
из значения 0
вы не получаете -1
, а вместо этого получаете очень большое значение, так как значение unsigned underflow возвращается к своему максимальному значению.
Это означает, что ваш цикл действительно будет повторяться, по крайней мере, один раз,и приводит к UB (неопределенному поведению) при индексировании вне границ.