Comparador para min-heap em C ++
Eu estou tentando fazer um min-heap1 dolong
s 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.