Вы неправильно используете push_heap.
После инициализации вектора необходимо поместить его в порядке кучи:
std::make_heap(vector1.begin(), vector1.end());
Чтобы добавить дополнительные элементы в кучу, вам нужно сначала переместить каждый элемент в конец вектора, затем вызвать push_heap:
vector1.push_back(42);
std::push_heap(vector1.begin(), vector1.end());
Наконец, чтобы удалить первый элемент в куче, вам нужно вызвать pop_heap с последующим извлечением последнего элемента из вектора:
std::pop_heap(vector1.begin(), vector1.end());
vector1.pop_back();
Функции кучи с тремя параметрами позволяют вам указать метод сравнения для управления порядком кучи, который вы делаете правильно.
Причина ручных вызовов push_back и pop_back заключается в том, что функции кучи видят итераторы только в контейнере и не имеют доступа к самому контейнеру. Поскольку итераторов недостаточно для изменения содержимого контейнера, это должен сделать владелец контейнера (вы) вручную.
Чтобы не сталкиваться с этим самостоятельно, я бы рекомендовал использовать std::priority_queue
.