在默认的STL中,priority_queue一般是大根堆,如果想要改成小根堆或者自定义数据类型,就需要写仿函数,例子如下:
[c language=”++”]
struct cmp
{
bool operator()(const int&a, const int&b)
{//小根堆
return a > b;
}
};
priority_queue<int, vector<int>, cmp> minHeap;
[/c]
需要说明的是,需要return a>b,这样才构成小根堆,因为原STL中,调用的是a<b操作构成的大根堆。
如果需要自定义数据结构,同样采取上述办法即可。