priority_queue


priority_queue 优先队列,其底层是用堆来实现的。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。在优先队列中,没有 front() 函数与 back() 函数,而只能通过 top() 函数来访问队首元素(也可称为堆顶元素),也就是优先级最高的元素。

priority_queueq;  // 默认从大到小排列
q.push(3);
q.top();
q.pop();

怎么设置元素的优先级?
priority_queue

// 从小到大排序
priority_queue,greater>q;
// 从大到小排序
priority_queue,less>q;

结构体排序:

struct node
{
    int x, y;
    node(int x,int y):x(x),y(y){}
};
 
struct cmp
{
    bool operator()(node a,node b)
    {
        if(a.x == b.x)  return a.y >= b.y;
        else return a.x > b.x;  // 小顶堆
    }
};

priority_queue,cmp> pq;

你可能感兴趣的:(priority_queue)