首页 > 代码库 > STL容器 -- Priority_Queue
STL容器 -- Priority_Queue
核心:和队列相似,但优先队列中的 “下一个元素” 指的是 “优先级最高” 的元素.
头文件:#include<queue>
普通类型的构造方法:
priority_queue<int> maxQu; //构造一个包含 int 型元素的优先队列,默认优先级为 int 元素的值越大则优先级越高priority_queue< int, vector<int>, greater<int> > minQu; //构造一个包含 int 型元素的优先队列,优先级为 int 元素的值越小则优先级越高
除此之外,改变默认的优先级还可以自己写比较函数:
struct cmp { bool operator () (const int a, const int b) const { return a > b; // 值越小优先级越高,这里可以灵活的变通,比如“个位越小优先级越高" 则可以写成: reutn a % 10 > b % 10; }};priority_queue <int, vector<int>, cmp> minQu;
常用的操作:
priQu.size() //返回优先队列内部的元素个数priQu.empty() //判断队列是否为空priQu.push(elem) //将元素 elem 添加到优先队列priQu.top() //返回优先队列内优先级最高的那个元素, 如果同时存在多个, 则只返回其中一个priQu.top() //移除优先队列内优先级最高的那个元素
结构体类型的应用:
//优先队列的内部元素为结构体类型时,需要重载 ‘<‘ 运算符struct NODE { //结构体的写法 int x, y; bool operator < (const NODE& a) const { //1 级优先级为 x 的值越大优先级越高,2 级优先级为 b 越小优先级越高 if(x == a.x) return y > a.y; // 当 1 级优先级无法判断时才考虑 2 级优先级 return x < a.x; }};priority_queue<NODE> ndQu;//结构体类型的优先队列的构造
STL容器 -- Priority_Queue
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。