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容器,用于记 ...
随机推荐
- 雅虎Yahoo 前段优化 14条军规
Yahoo 14条 雅虎十四条 腾讯前端设计的Leader推荐我背熟的.请大家都能好好学习,不要像我一样一扫而过,好好的记下来!不仅仅是晓得一些CSS xhtml就好了,深刻认识到很多的东西需要学习的 ...
- windows必备,命令行工具cmder
下载cmder并安装! 64位可下,亲测: http://www.wmzhe.com/soft-31133.html 创建文件夹并进入文件夹命令: mkdir web-server && ...
- 通过MSSQl作业定时执行批处理BAT文件
前言 有些时候,我们可能会需要定时执行一下批处理来达到一定的目的,比如Oracle数据库的定时备份,当然Oracle也可以通过Rman实现定时备份.我们大多数的时候是通过操作系统的计划任务实现定时执行 ...
- jquery实现简单的Tab切换菜单
实现tab切换的主要html代码: <div class="container"> <ul class="tabs"> <li c ...
- H5小游戏的坑点小结
坑点: 1) iOS 9.1 的safari中,在onTouchBegan方法中调用cc.audioEngine.playEffect播放音效是没有效果的,如果在onTouchEnded调用则是正常的 ...
- Level shifting a +/- 2.5V signal to 0 - 5V
Google : Op-Amp Level Shifter Level shifting a +/- 2.5V signal to 0 - 5V I have a front end module t ...
- MS SQL SERVER索引优化相关查询
查找缺失索引 -- ============================================= -- Description: 查询当前数据库中缺失的索引,知道你进行优化的 ...
- Oracle Essbase入门系列(二)
本篇开始会一个三口之家的家庭财务数据库为例,讲述Essbase的功能和开发.为了说明EPM应用程序的管理和开发过程,会绕一些弯路,不使用EAS,而尽量用EPMA. 创建应用程序 首先登陆到Worksp ...
- Java Split以竖线作为分隔符
今天用到了Java中的Split函数,要以“|”作为分割符,当输入竖线时,发现出错,这个问题应该很久前就遇到过,不过太长时间就给忘了! 网上一搜,就找到了答案,这是因为split里面有两个参数,其中一 ...
- java代写
Computer Science, Claremont McKenna CollegeCS51.2 - Introduction to Computer Science, Fall 2014Probl ...