priority_queue
•知识支持
熟悉堆排序的小伙伴们都知道,使数组按照升序排列,需要创建大根堆,反之,需要创建小根堆;
而优先级队列就是通过堆来实现排序的;
也就是说,建立一个升序排列的优先级队列,需要创建一个大根堆;
•定义
1 greater<int >:创建大根堆,使队列升序排列 2 priority_queue<int ,vector<int >,greater<int > >q;1 less<int >:创建小根堆,使队列降序排列 2 priority_queue<int ,vector<int >,less<int > >q;1 struct Heap 2 { 3 int x; 4 bool operator < (const Heap &obj)const 5 { 6 /** 7 创建Heap数组,则按照x降序排列 8 如果放到优先级队列中,则是按照x升序排列 9 相当于根据x创建了一个大根堆 10 */ 11 return x > obj.x; 12 } 13 }; 14 priority_queue<Heap >q;///按照x升序排列
•常用操作
$q.push()$ , $q.pop()$ , $q.top()$ , $q.empty()$ , $q.size()$