Komparator dla sterty min w C ++
Próbuję zrobić min-stertę1 zlong
sw 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.