一、概述
顾名思义,priority_queue是一个拥有权值观念的queue。其里面的元素的排列顺序是通过最大堆来决定的。最大的元素在堆顶,形成了一个最大堆。缺省的情况下priority_queue是利用一个max-heap来实现的。而max-heap是一个以vector表现的complete binary tree。
注意:对于一个堆来说,最大的元素在堆顶,但是后面的元素不一定是有序的。
2.max-heap实现优先队列
最大堆的创建
每添加一个元素,就把这个堆构建成最大堆,以确保堆顶元素最大。然后当需要删除堆顶元素时,因为堆顶元素就是vector的第一个元素,所以只需要将vector里面的第一个元素和最后一个元素交换,然后让vector的大小减一就行了。然后将vector里面的元素再次构成一个max-heap。
3.优先队列的定义
4.priority_queue没有迭代器
它和queue类似,只有顶端的元素才会被使用。