我正在尝试使用 STL 等在 C++ 中创建 s的最小堆1,但我的比较器似乎没有正确比较。以下是我目前的比较器:long
make_heap
struct greater1{
bool operator()(const long& a,const long& b) const{
return a>b;
}
};
但是,当我执行std::pop_heap(humble.begin(),humble.end(),g);
where g
is an instance greater1
and humble
is a heap who make [9,15,15,25]
when sort_heap
is called 时,我会15
弹出一个。
我的比较器正确吗?可能出了什么问题?
编辑:
我意识到我正在运行没有比较器的 sort_heap,而当我运行这个比较器时,我[15,15,9,25]
从sort_heap
. 现在我在想我的比较器肯定不起作用,但不确定为什么。
1 STL 默认创建一个最大堆,所以我需要一个比较器。