您的位置:首页 > 产品设计 > UI/UE

STL学习之优先队列(Priority_queue)(1)

2016-10-12 14:28 666 查看

STL学习之优先队列(Priority_queue)(1)

[align=left]
[/align]
[align=left]在学习到数据结构中的栈和队列这一块时,接触到了STL库中的queue有关的函数。[/align]
优先队列(priority_queue)是队列(queue)的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序。
[align=left]在队列(queue)中,有以下几项基本操作:[/align]
[align=left]1.c.pop() : 返回队列头部数据[/align]
[align=left]2.c.push(elem) : 在队列尾部增加elem数据[/align]
<
4000
div align="left">3.c.pop() : 队列头部数据出队
[align=left]4.c.empty() :判断队列是否为空[/align]
5.c.size():
返回队列中数据的个数
[align=left]由此可见,queue的基本操作与stack(栈)类似。[/align]
[align=left]
[/align]

一、标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。

[align=left]priority_queue<int> pq;[/align]
[align=left]
[/align]

二、数据越小,优先级越高

[align=left]priority_queue<int, vector<int>, greater<int> > pq1;[/align]
[align=left]
[/align]
[align=left]附上一段简单的代码[/align]
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 队列