1. 优先队列
用途:按照某一个关键字对插入元素或删除元素后的数据集进行自动排序
复杂度: logN
2. 数据声明
(1)头文件:#include<queue>
(2)声明: priority_queue <T> q; //T是一个泛型,可以是结构体
priority_queue <T,vector<T>,greater<T> > q;
greater函数也可以通过对结构体重载一个<运算符的bool函数
3. 库函数
q.size();//返回q里元素个数q.empty();//返回q是否为空,空则返回1,否则返回0q.push(k);//在q的末尾插入kq.pop();//删掉q的第一个元素q.top();//返回q的第一个元素q.back();//返回q的末尾元素
4. 实例
#include#include using namespace std;struct Node{ int x, y; Node(int a=0, int b=0): x(a),y(b){}};bool operator<(Node a, Node b){ //返回true时,说明a的优先级低于b //x值较大的Node优先级低(x小的Node排在队前) //x相等时,y大的优先级低(y小的Node排在队前) if( a.x== b.x ) return a.y> b.y; return a.x> b.x; }int main(){ priority_queue q; for( int i= 0; i< 10; ++i ) q.push( Node( rand(), rand() ) ); while( !q.empty() ){ cout << q.top().x << ' ' << q.top().y << endl; q.pop(); } return 0;}