Не удаляет int в векторе через итератор, как исправить?
Ну прежде всего erase возвращает итератор на елемент, следующий за удаленным
it = hmn->friends.erase(it);
Вариант с --it не валиден.
Во вторых лаконичнее будет воспользоваться erase-remove идиомой https://en.wikipedia.org/wiki/Erase–remove_idiom
там есть пример на ваш случай
Оформите нормально код и поставьте вывод внутри условия с удалениемif(id_user==*it)
{
    cout << "erase";
    hmn->friends.erase(it);
    it--;
}
Не удаляет или не находит?