priority_queue(优先队列)
优先队列与普通队列不同的地方就是出队的时候按照优先级顺序出队,这个优先级即最大堆或最小堆的规则(即大的为top优先出队或小的为top优先出队),在队列的基础上加了个堆排序。
优先队列包含在头文件 <queue> 中
最大堆与最小堆
最大堆
//构造一个空的优先队列(此优先队列默认为大顶堆) priority_queue big_heap;
//另一种构建大顶堆的方法 priority_queue<int,vector,less > big_heap2;
最小堆
//构造一个空的优先队列,此优先队列是一个小顶堆 priority_queue<int,vector<int>,greater<int> >small_heap;
注意事项 需要注意的是,如果使用less和greater,需要头文件:#include <functional>
我们通过使用push()函数插入元素,并且插入操作与普通队列相同。但是,当我们使用pop()函数从队列中删除元素时,优先级最高的元素将首先被删除。
优先队列的成员函数
函数 | 描述 |
---|---|
push() | 它将新元素插入优先队列。 |
pop() | 它将优先级最高的元素从队列中删除。 |
top() | 此函数用于寻址优先队列的最顶层元素。 |
size() | 返回优先队列的大小。 |
empty() | 它验证队列是否为空。基于验证,它返回队列的状态。 |
swap() | 它将优先队列的元素与具有相同类型和大小的另一个队列交换。 |
emplace() | 它在优先队列的顶部插入一个新元素。 |