定义
template<
class T,
class Container = [std::vector](http://en.cppreference.com/w/cpp/container/vector)<T>,
class Compare = [std::less](http://en.cppreference.com/w/cpp/utility/functional/less)<typename Container::value_type>
> class priority_queue;
提供常数时间的最优先元素的查找(当为int时,默认为最大),对数代价的插入与弹出。
第一个参数,表示优先队列中元素的类型,eg,int和vector,各元素类型应该相同。
第二个参数,表示怎么去存储第一个参数中的元素,满足一定条件,一般为vector和deque
第三个参数,比较各个元素之间的关系,第一实参先于第二实参,则返回true,否则返回 false,默认是std::less
即小于为真,则优先级更低,(满足更低)
自定义比较函数
lambda函数
auto cmp = [](vector<int> a, vector<int> b) { return a[0] * a[0] + a[1] * a[1] > b[0] * b[0] + b[1] * b[1]; };
priority_queue< vector<int>, vector<vector<int>>, decltype(cmp) > pq(cmp);
类或结构体
struct cmp{
bool operator()(vector<int> a, vector<int> b){
return a[0] * a[0] + a[1] * a[1] > b[0] * b[0] + b[1] * b[1];
}
};
priority_queue< vector<int>, vector<vector<int>>, cmp > pq;
网友评论