**
数据结构之优先队列(priority_queue)的简单认识和使用
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。
基本操作
top 访问队头元素
empty 队列是否为空
size 返回队列内元素个数
push 插入元素到队尾 (并排序)
emplace 原地构造一个元素并插入队列
pop 弹出队头元素
swap 交换内容
应用
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main()
{
vector<int> intput;
priority_queue<int> output;
int i = 0;
intput.push_back(0);
intput.push_back(9);
intput.push_back(6);
intput.push_back(7);
intput.push_back(2);
intput.push_back(4);
intput.push_back(1);
intput.push_back(8);
intput.push_back(3);
intput.push_back(5);
cout<<"output.empty()\t"<<output.empty()<<endl;//判断队列是否为看空
cout<<"output.size()\t"<<output.size()<<endl;//判断队列里面的元素个数
for(i = 0; i < intput.size();++i)
{
output.push(intput[i]);//往优先队列里面写数据
}
cout<<"output.empty()\t"<<output.empty()<<endl;//判断队列是否为看空
cout<<"output.size()\t"<<output.size()<<endl;//判断队列里面的元素个数
for(i = 0; i < intput.size();++i)
{
cout<<output.top();//打印优先队列的头部元素
output.pop();//删除头部元素
}
cout<<endl;
cout<<"output.empty()\t"<<output.empty()<<endl;//判断队列是否为看空
cout<<"output.size()\t"<<output.size()<<endl;//判断队列里面的元素个数
return 0;
}
默认是大的元素在顶部