Думаю тут проблема в том, что ты при вычислении min и max лезешь на 1 элемент вперед. Таким образом когда мы подходим к концу массива, ты выходишь за его границы. Однако тут по логике точно ошибка.
Но опыта у меня мало, поэтому будем ждать ещё что люди скажут.
Я бы сделал простую проверку через if.
if ( (i + 1) > rast.size()) {
break;
}