Я пытаюсь сделать 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 делает по умолчанию максимальную кучу, поэтому мне нужен компаратор.