STL heap和first_queue
标签(空格分隔): @zhshh STL heap first_queue
可以看看这个文章
大家都知道,priority_queue是用堆实现的,可以通过重载()运算符选择使用最大堆或最小堆。以前一直觉得stl里面的heap相关的函数都是多余的,因为一般的heap操作都可以用priority_queue来做。直到今天看了July博客中的那道求前k小的数(http://blog.csdn.net/v_JULY_v/article/details/6370650)才发现stl中heap操作独立存在的必要。
来自原文
stl里关于heap的函数与priority_queue的区别----CSDN jackycmu
STL类似的结构有heap
和first_queue
,区别是heap可以在元素放入完成后再建堆,从而在O(n)时间内完成,而first_queue
必须不断插入,因此时间是O(n*lg n)
STL_heap函数(在库algorithm
里面)
make_heap
建堆
push_heap
插入元素
pop_heap
删除元素
sort_heap
堆排序(和堆操作没任何联系,sort_heap之后数据是排序的,就不是堆了)
此外还有is_heap
(似乎是C++11的,不建议在OI使用,不知道是否支持)等等,C++reference