STL学习之优先队列(Priority_queue)(1)
在学习到数据结构中的栈和队列这一块时,接触到了STL库中的queue有关的函数。
优先队列(priority_queue)是队列(queue)的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序。
在队列(queue)中,有以下几项基本操作:
1.c.pop() :
返回队列头部数据
2.c.push(elem) :
在队列尾部增加elem数据
3.c.pop() :
队列头部数据出队
4.
c.empty()
:
判断队列是否为空
5.
c.size()
:
返回队列中数据的个数
由此可见,queue的基本操作与stack(栈)类似。
一、标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。
priority_queue<int> pq;
二、数据越小,优先级越高
priority_queue<int, vector<int>, greater<int> > pq1;
附上一段简单的代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int array[] = {1, 5, 2, 10, 8, 3};
priority_queue<int> pq;
priority_queue<int, vector<int>, greater<int> > pq1;
for (int i = 0; i < 6; i++)
{
pq.push(array[i]);
pq1.push(array[i]);
}
for (int i = 0; i < 6; i++)
{
cout << pq.top() << " ";
pq.pop();
}
cout << endl;
for (int i = 0; i < 6; i++)
{
cout << pq1.top() << " ";
pq1.pop();
}
cout << endl;
return 0;
}