1. priority_queue
1.1 priority_queue基本特性
- 定义:在优先队列中,元素赋予优先级,具有优先级最高先出的特征。例如:
priority_queue<type, container, function> que
。其中type表示数据类型;container表示实现优先队列的底层容器,例如vector,deque,但不能用list; function表示元素之间的比较形式。后面两个参数可以省略,默认是大根推。
- 常见成员函数:
bool empty() const;
、int size() const;
、 int top(); //与对列 que.front() 不同,这里是que.top()返回队列顶部元素;
、 void push(); //将元素插到队列中并进行排序
、void pop(); //删除队列的顶部元素
。
- 大顶堆:
priority_queue<int> que;
、priority_queue<int, vector<int>, less<int> > que;
- 小顶堆:
priority_queue<int, vector<int>, greater<int>> q;
, 其中greater和less是std实现的两个仿函数(就是使一个类的使用看上去像一个函数,其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了)。
1.2 数据类型为pair的优先队列
const int size = 3;
priority_queue<pair<int, int>> que;
pair<int, int> p[size] = {
{
1, 11}, {
2,22}, {
3, 33}};
for (int i = 0; i < size; i++) {
que.push(p[i]);
}
while (!que.empty