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()$

posted @ 2019-08-29 15:17  HHHyacinth  阅读(100)  评论(0编辑  收藏  举报