优先级队列的使用

使用优先级队列,默认大根堆(每次top()取到最大的元素)

 priority_queue<int> a; 
 //等同于 priority_queue<int, vector<int>, less<int> > a;

小根堆的使用:

priority_queue<int, vector<int>, greater<int> > c;

自定义类型的优先级队列(常用):

struct Status {
        int val;
        ListNode *ptr;
        //重载比较符,定义Status的大小由val决定,且由于此处要使用小根堆,
        //所以写的方法和从大到小排序一样,返回自己的元素>对方元素
        bool operator < (const Status &rhs) const {
            return val > rhs.val;
        }
        
    };
priority_queue <Status> Q;
Status cur=Q.top();
Q.pop();
if(cur.ptr->next)
{
	Q.push({cur.ptr->next->val,cur.ptr->next});
}

注意上面创建一个结构体的简洁写法,直接按定义结构体的顺序往{}里面填元素即可创建一个新的结构体变量

原创文章 12 获赞 11 访问量 442

猜你喜欢

转载自blog.csdn.net/qq_43209705/article/details/105765554