STL中priority_queue小结
(1)为了运用priority_queue,你必须包含头文件<queue>:#include<queue> (2)在头文件中priority_queue定义如下:
namespace std{
template <class T, class Container = vector<T>,
class Compare = less<typename Container::value_type> >
class priority_queue;
}
第一个template参数代表元素型别,带有默认值的第二个参数用来定义priority_queue内部存放元素所用的实际容器,缺省采用vector。第三个参数定义出“用以搜索下一个最高优先元素”的排序准则,缺省下是以operator <作为比较标准。实际上priority_queue只是很单纯的把各项操作转化为内部容器的对应调用,你可以使用任何序列式容器来支持priority_queue,只要它们支持随机存取迭代器和front(),push_back(),pop_back()等动作就行了。由于priority_queue需要用到STL heap算法,所以其内部容器必须支持随机存取迭代器。 (3)priority_queue的各项操作:
priority_queue::priority_queue()
默认构造函数,产生一个空priority_queue explicit priority_queue::priority_queue(const ComFunc& op)
产生一个priority_queue,以op为排序准则 priority_queue::priority_queue(const ComFunc& op, const Container& cont)
产生一个priority_queue,以op为排序准则,并以容器cont内的元素为初值(复制) priority_queue::priority_queue(InputIterator beg, InputIterator end)
产生一个priority_queue,以区间[beg, end)内的元素为初值 priority_queue::priority_queue(InputIterator beg, InputIterator end, const ComFunc& op)
产生一个priority_queue,以区间[beg, end)内的元素为初值,以op为排序准则 priority_queue::priority_queue(InputIterator beg, InputIterator end, const ComFunc& op, const Container& cont)
产生一个priority_queue,以区间[beg, end)内的元素为初值,以op为排序准则及容器cont内的元素为初值 size_type priority_queue::size() const
返回元素个数 bool priority_queue::empty() const
判断priority_queue是否为空 void priority_queue::push(const value_type& elem)
将elem的副本插入priority_queue const value_type& priority_queue::top() const
返回priority_queue的“下一个”元素,调用者必须确保priority_queue不为空否则可能是未定义的行为 void priority_queue::pop()
移除priority_queue的“下一个”元素,调用者必须确保priority_queue不为空否则可能是未定义的行为
STL中priority_queue小结的更多相关文章
- STL 中priority_queue小结
(1)为了运用priority_queue,你必须包含头文件<queue>:#include<queue> (2)在头文件中priority_queue定义如下: nam ...
- STL中stack小结
(1)为了运用stack,你必须包含头文件<stack>:#include<stack> (2)在头文件中stack定义如下: namespace std{ template ...
- STL中vector小结
()使用vector之前必须包含头文件<vector>:#include<vector> ()namespace std{ template <class T, clas ...
- 浅谈C++ STL中的优先队列(priority_queue)
从我以前的博文能看出来,我是一个队列爱好者,很多并不是一定需要用队列实现的算法我也会采用队列实现,主要是由于队列和人的直觉思维的一致性导致的. 今天讲一讲优先队列(priority_queue),实际 ...
- STL中的优先级队列priority_queue
priority_queue(queue类似)完全以底部容器为根据,再加上二叉堆(大根堆或者小根堆)的实现原理,所以其实现非常简单,缺省情况下priority_queue以vector作为底部容器.另 ...
- STL中sort、priority_queue、map、set的自定义比较函数
STL中,sort的默认排序为less,也就是说从小到大排序:priority_queue默认是less,也就说大顶堆:map默认是less,也就说用迭代器迭代的时候默认是小的排在前面:set默认是l ...
- STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- 【转】 STL中的set容器的一点总结
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- (转)STL中set的用法
转载自here 1.关于set map容器是键-值对的集合,好比以人名为键的地址和电话号码.相反地,set容器只是单纯的键的集合.例如,某公司可能定义了一个名为bad_checks的set容器,用于记 ...
随机推荐
- jQuery/javascript实现简单网页计算器
<html> <head> <meta charset="utf-8"> <title>jQuery实现</title> ...
- js高仿QQ消息列表左滑功能
该组件,主要功能类似于QQ消息列表左滑出现删除.标为已读等按钮的功能:现在的版本用的是纯javaScript编写:后续会跟进 angularJs 开发的类似组件以及jquery的; 下面,就让我们来认 ...
- FIREDAC操作SQLITE内存数据库
SQLite不仅可以把数据库放在硬盘上,还可以放在内存中,经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍. 但数据库放在内存中时有如下缺陷: 1.断电或程序崩溃后数据库就会消失 ...
- 都昌 DCWriter电子病历编辑器演示文档截屏
- [轉載]史上最强php生成pdf文件,html转pdf文件方法
之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有 ...
- How do I check if a type is a subtype OR the type of an object?
To check if a type is a subclass of another type in C#, it's easy: typeof (SubClass).IsSubclassOf(ty ...
- Scala 深入浅出实战经典 第42讲:scala 泛型类,泛型函数,泛型在spark中的广泛应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Codeforces Round #383 (Div. 2) 题解【ABCDE】
Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...
- 今日 使用ajaxfileupload 异步上传 但是在IE下面 会弹出下载框
本来以为ajaxfileupload.js的问题 后来发现 其实是 后台代码返回来的时候 修改context.Response.ContentType = "text/html"; ...
- RxJava基本流程和lift源码分析
1.subscribe过程 2.lift过程