STL适配器之priority_queue
来源:互联网 发布:讲课视频软件 编辑:程序博客网 时间:2024/05/16 04:10
1、基本概念
priority_queue本质上也是一个queue,但在其基础上加入了权值的概念,入队依然是依次入队,但出队的时候却是权值最高的元素先出队,以满足一些特殊的需求。heap将极值放到头节点,可以很好的满足priority_queue的需求。默认情况下,priority_queue使用vector作为底层容器,使用max-heap进行规制处理。
2、基本用法
priority_queue是在heap的基础上进行的封装,使用起来是很简洁的,以下是测试代码:
int data[9] = {0,1,2,3,4,8,9,3,5};priority_queue<int> a(data,data+9);cout<<"size:"<<a.size()<<endl; //size:9while (!a.empty()){ cout<<a.top()<<" "; //9 8 5 4 3 3 2 1 0 a.pop();}cout<<endl;
这里,我们主要关注一下priority_queue的push和pop操作。由于heap算法本身并不处理数据的插入删除操作,因而这部分需要交由底层容器进行处理,以下是push和pop的实现源码:
void push(const value_type& __x) { __STL_TRY { c.push_back(__x); push_heap(c.begin(), c.end(), comp); } __STL_UNWIND(c.clear()); } void pop() { __STL_TRY { pop_heap(c.begin(), c.end(), comp); c.pop_back(); } __STL_UNWIND(c.clear()); }
这里实际是容器和算法结合使用的结果,单独使用其中一个是达不到我们想要的目的的。
3、迭代器
priority_queue也是对元素使用了特殊的规则进行约束,不提供遍历操作,也不提供迭代器。
0 0
- STL适配器之priority_queue
- STL学习之priority_queue适配器
- STL学习之priority_queue适配器
- STL之容器适配器:stack,queue , priority_queue
- STL容器适配器:priority_queue
- stl 顺序容器适配器之stack, priority_queue, queue用法
- STL之容器适配器priority_queue的实现框架
- stl之适配器容器——stack, queue, priority_queue
- 容器适配器之priority_queue
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue【转】
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue
- STL之priority_queue实现
- STL之priority_queue
- 轻松快速入门mysql的小基友redis
- 为什么while (*s++ = *t++);这句代码的作用是复制字符串?
- Spring MVC学习(六)-------注解式控制器详解4
- jdbc连接sql server 出现 java.sql.SQLException: Network error IOException: Connection refused:
- krpano限制鼠标放大的比列
- STL适配器之priority_queue
- Spring MVC学习(六)-------注解式控制器详解5
- 上传图片类型限制和防止反复提交,php递归删除空文件夹
- 第七讲:c/c++文件的读取、操作和定位
- Android 国际化与屏幕适配!
- 求质数
- 2017年华为实习生面经
- android DataBinding 的简单使用
- Spring MVC学习(七)-------SpringMVC数据类型转换