Компаратор для min-heap в C ++
Я пытаюсь сделать мин-кучу1 изlong
в C ++ с использованием STLmake_heap
и т. д., но мой компаратор неКажется, сравнивать правильно. Вот мой текущий компаратор:
struct greater1{
bool operator()(const long& a,const long& b) const{
return a>b;
}
};
Тем не менее, когда я делаюstd::pop_heap(humble.begin(),humble.end(),g);
гдеg
является примеромgreater1
а такжеhumble
это куча, которая делает[9,15,15,25]
когдаsort_heap
называется, я получаю15
совал.
Мой компаратор правильный? что может быть не так?
РЕДАКТИРОВАТЬ:
Я понял, что я запускаю sort_heap без компаратора, тогда как при запуске этого компаратора я получаю[15,15,9,25]
отsort_heap
, Теперь я думаю, что мой компаратор определенно не работает, но не знаю почему.
STL делает max-heap по умолчанию, поэтому мне нужен компаратор.