优先队列 priority_queue<> Queue STL的一部分
头文件 #include<queue>
性质:还是一个队列,只不过每个元素都有优先级或者权,(对于整数来讲可能就是整数本身的大小),里面的元素都是按照优先级的顺序排列,出队时也是按照优先级从大到小。
基本的操作:
Queue.empty()判断是否为空
Queue.top()取优先级最高的
Queue.pop()出队首元素
Queue.push()在基于优先级的适当位置进队一个
Queue.size()返回队列中元素的个数
优先队列中插入和删除操作都是 O(lgn)
几种用法:
priority_queue<int>Queue
按照整数由大到小的顺序 比如9876
priority_queue<int, vector<int>, greater<int> >Queue
这是按从小到大排 第二个参数是容器类型 第三个参数是比较函数 注意最后两个>间要有空格隔开,否则报错
自定义优先级的:
struct number
{
int value;
int priority;
bool operator<(number n1, number n2)const
{
return n1.priority<n2.priority;
}
};
priority_queue<number>Queue;