五 STL算法(二)stl_algo.h
来源:互联网 发布:什么是淘宝店铺首页 编辑:程序博客网 时间:2024/06/05 03:22
一 <stl_algo.h>概述:
定义于SGI<stl_algo.h>内的所有算法包含:heap算法(定义于<stl_heap.h>中,stl_algo.h包含<stl_heap.h>);set相关算法和其它的算法。
二 heap算法
(1)定义于<stl_heap.h>中,被<stl_algo.h>头文件#include。
(2)具体算法:
*make_heap():
*push_heap():
*pop_heap():
*sort_heap():
三 set相关算法(与常规的集合操作不同)
(1)set_unoin:
(2)set_difference:
(3)set_intersection:
(4)set_symmetric_difference:
四 sort(只适用于vector和deque):
(1)格式
template<typename _RandomAccessIterator>
inline void sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
sort算法接受两个RandomAccessIterators,然后将区间内的所有元素以渐增方式由小到大重新排列;第二个版本允许用户指定一个函数对象作为排序准则。
只适用于vector和deque,原因:
*STL的关联容器都具有自动排序功能,不需要sort算法。
*序列式容器中的stack、queue和priority_queue都具有特定的出入口,不允许用户对其排序。
*序列式容器中剩下的list的迭代器是BidirectionalIterators,不适合sort算法,slist的迭代器是ForwardIterators,也不适合sort算法,所以list和slist自带自己的成员函数sort。
(2)STL的sort算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后数据量小于一个门槛,为避免Quick Sort的递归调用带来的额外负荷(overhead),就改用Insertion Sort,如果递归层次过深还会采用Heap Sort。
Quick Sort:采取三点中值的方法(采取头、中、尾三个位置的中值,不是平均值,作为枢纽值)。
五 其它算法(详见实现文件<stl_algo.h >)
- 五 STL算法(二)stl_algo.h
- STL源码剖析 [算法](二)[stl_algo.h]
- STL 源码剖析 算法 stl_algo.h -- merge
- STL 源码剖析 算法 stl_algo.h -- partition
- STL 源码剖析 算法 stl_algo.h -- includes
- STL 源码剖析 算法 stl_algo.h -- rotate
- STL 源码剖析 算法 stl_algo.h -- search
- STL 源码剖析 算法 stl_algo.h -- search_n
- STL 源码剖析 算法 stl_algo.h -- lower_bound
- STL 源码剖析 算法 stl_algo.h -- upper_bound
- STL 源码剖析 算法 stl_algo.h -- binary_search
- STL 源码剖析 算法 stl_algo.h -- next_permutation
- STL 源码剖析 算法 stl_algo.h -- pre_permutation
- STL 源码剖析 算法 stl_algo.h -- random_shuffle
- STL 源码剖析 算法 stl_algo.h -- equal_range
- STL 源码剖析 算法 stl_algo.h -- nth_element
- STL 源码剖析 算法 stl_algo.h -- inplace_merge
- STL源码剖析——STL算法stl_algo.h
- 如何很好的看很大的思维导图
- EL 全名为Expression Language
- extern 解析
- 《JSP大学实用教程》 电子工业出版社 编著:耿祥义 张跃平 例子源代码
- 中缀表达式直接求值
- 五 STL算法(二)stl_algo.h
- Python中的html.parser
- cocos2d-x 显示遇到白框
- 线程函数的优先级
- 顺序栈的建立
- Java操作XML文件大合集(增删改查)
- libevent timer定时器
- snmptrap、snmpinform和snmptrapd的详细介绍及其用法
- 再看ADO.NET