Comparador para min-heap em C ++

Eu estou tentando fazer um min-heap1 dolongs em C ++ usando o STLmake_heap, etc., mas meu comparador não parece estar comparando corretamente. O seguinte é meu comparador atual:

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

No entanto, quando eu façostd::pop_heap(humble.begin(),humble.end(),g); Ondeg é uma instância degreater1 ehumble é uma pilha que faz[9,15,15,25] quandosort_heap é chamado, eu recebo um15 estalou.

Meu comparador está correto? o que pode estar errado?

EDITAR:
Percebi que estou executando o sort_heap sem comparador, enquanto quando executo este comparador, recebo[15,15,9,25] desort_heap. Agora estou pensando que meu comparador definitivamente não está funcionando, mas sem saber por quê.

1O STL faz um heap máximo por padrão, então eu preciso de um comparador.

questionAnswers(3)

yourAnswerToTheQuestion