end()
обычно возвращает недопустимую позицию в массиве (одну за концом).
pop_back()
удаляет последний элемент в векторе.
Если вы хотите стереть,Вы должны сделать erase(end() - 1);
здесь end() - 1
возвращает итератор для последнего элемента.
erase(end())
должен вызвать UB - что я считаю правильным ...
РЕДАКТИРОВАТЬ: как Мартинуказал перед тем, как вызвать erase(end() - 1)
, убедитесь, что вектор не пустой!