本文是听的网络课程,而记录下来的学习心得。
自适应容器(容器适配器):不能使用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;
}