Komparator dla sterty min w C ++

Próbuję zrobić min-stertę1 zlongsw C ++ za pomocą STLmake_heap, itp., ale mój komparator nie wydaje się poprawnie porównywać. Oto mój obecny komparator:

struct greater1{
    bool operator()(const long& a,const long& b) const{
        return a>b;
    }
};

Jednak kiedy to robięstd::pop_heap(humble.begin(),humble.end(),g); gdzieg jest przykłademgreater1 ihumble to kupa, która robi[9,15,15,25] gdysort_heap nazywa się, dostaję15 trzasnął.

Czy mój komparator jest poprawny? co może pójść źle?

EDYTOWAĆ:
Zrozumiałem, że używam sort_heap bez komparatora, podczas gdy ja uruchamiam ten komparator, otrzymuję[15,15,9,25] zsort_heap. Teraz myślę, że mój komparator zdecydowanie nie działa, ale nie wiem dlaczego.

1STL domyślnie tworzy maksymalną stertę, więc potrzebuję komparatora.

questionAnswers(3)

yourAnswerToTheQuestion