优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。
例如:我们常用的操作就是对数据排序,优先队列默认的是数据大的优先级高所以我们无论按照什么顺序push一堆数,最终在队列里总是top出最大的元素。
用法:
示例:将元素5,3,2,4,6依次push到优先队列中,print其输出。
1. 标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。
通过<操作符可知在整数中元素大的优先级高。故示例1中输出结果为: 6 5 4 3 2
2. 数据越小,优先级越高
, greater
>pq;
1 struct node2 {3 friend bool operator< (node n1, node n2)4 {5 return n1.priority < n2.priority;6 }7 int priority;8 int value;9 };
1 #include 2 #include 3 #include 4 using namespace std; 5 struct node 6 { 7 friend bool operator< (node n1, node n2) 8 { 9 return n1.priority < n2.priority;10 }11 int priority;12 int value;13 };14 int main()15 {16 const int len = 5;17 int i;18 int a[len] = { 3,5,9,6,2};19 //示例120 priority_queue qi;21 for(i = 0; i < len; i++)22 qi.push(a[i]);23 for(i = 0; i < len; i++)24 {25 cout< <<" ";26 qi.pop();27 }28 cout<
>qi2;31 for(i = 0; i < len; i++)32 qi2.push(a[i]);33 for(i = 0; i < len; i++)34 {35 cout<