Я пытаюсь сделать min-heap 1 of long в С++ с использованием STL make_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 popped.
Правильно ли мой компаратор? что может пойти не так?
EDIT:
Я понял, что я запускаю sort_heap без компаратора, тогда как когда я запускаю этот компаратор, я получаю [15,15,9,25] от sort_heap. Теперь я думаю, что мой компаратор определенно не работает, но не знаю почему.
1 STL делает по умолчанию максимальную кучу, поэтому мне нужен компаратор.