最近在做一个大实验作业的时候借助优先队列想实现一个小顶堆,一开始使用的是重载运算符:
bool operator < (const Node& a) const //重载运算符以对OPEN表排序
{
return f > a.f;
}
但是调试发现并没有用
后来看到还可以重写仿函数
struct cmp
{
bool operator()(Node *&a, Node *&b) const
{
return a->f > b->f;//小顶堆
}
};
priority_queue<Node *, vector<Node *>, cmp> open;
本来是早就看到了这个方法,但以为是自己代码写错了,后来试了一下才发现是可以做到的。