您的位置:首页 > 编程语言 > C语言/C++

c++之STL(8)优先级队列 priority_queue

2016-07-28 00:53 489 查看
本文是听的网络课程,而记录下来的学习心得。

自适应容器(容器适配器):不能使用list

特点:数据中最大的放的是队首

从队首拿出来的数据始终是最大的

两种优先级队列:

最大值优先级队列、最小值优先级队列

优先级队列适配器 STL priority_queue

priority_queue<int, deque<int>> pq;

priority_queue<int, vector<int>> pq;

pq.empty()

pq.size()

pq.top()

pq.pop()

pq.push(item)

#include<iostream>
#include<queue>

//
using namespace std;

int main()
{
//最大值优先级队列
priority_queue<int, vector<int>> pq;
// 默认的是使用的 vector 上句等价于 priority_queue<int> pq;
priority_queue<int, deque<int>> pq2;
pq.push(10);
pq.push(5);
pq.push(-1);
pq.push(20);

cout << "优先级队列一共有:" << pq.size() << endl;

cout << pq.top() << endl;// 输出最大值
while (!pq.empty())
{
cout << "从优先级队列里删除:" << pq.top() << endl;
pq.pop();
}

//
system("pause");
return 0;
}


#include<iostream>
#include<queue>
#include<functional>

//
using namespace std;

int main()
{
//最大值优先级队列
priority_queue<int, vector<int>> pq;
// 默认的是使用的 vector 上句等价于 priority_queue<int> pq;
// greater 谓词 要加入头文件 #include<functional>
priority_queue<int, deque<int>, greater<int>> pq2;	// 最小值优先级队列
pq.push(10);
pq.push(5);
pq.push(-1);
pq.push(20);

cout << "优先级队列一共有:" << pq.size() << endl;

cout << pq.top() << endl;// 输出最大值
while (!pq.empty())
{
cout << "从优先级队列里删除:" << pq.top() << endl;
pq.pop();
}

cout << "下面是最小值优先级队列" << endl;
pq2.push(10);
pq2.push(5);
pq2.push(-1);
pq2.push(20);
cout << pq2.top() << endl;
while (!pq2.empty())
{
cout << pq2.top() << endl;
pq2.pop();
}

//
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: