STL 源码剖析:6、算法


6.1 算法概观


以有限的步骤,解决逻辑或数学上的问题。

6.1.1 算法分析与复杂度表示

6.1.2 STL 算法总览

6.1.3 质变算法

会改变操作对象的值。

6.1.4 非质变算法

不改变操作对象的值。

6.1.5 STL 算法的一般形式

所有的泛型算法的前两个参数都是一堆迭代器,通常称为 first 和 last。



6.2 算法的泛化过程


关键在于,只要把操作对象的型别加以抽象化,把操作对象的标示法和区间目标的移动行为抽象化,整个算法也就在一个抽象层面上工作了。



6.3 数值算法


STL 规定,欲使用它们,客户端必须包含表头 < numeric>。

6.3.1 运用实例

6.3.2 accumulate

6.3.3 adjacent_difference

6.3.4 inner_product

6.3.5 partial_sum

6.3.6 power

6.3.7 iota



6.4 基本算法


STL 标准规格中并没有区分基本算法或复杂算法,然而 SGI 却把常用的一些算法定义于 <stl_algobase.h>之中,其他算法定义于 <stl_algo.h> 之中。

6.4.1 运用实例

6.4.2 euqal,fill,fill_n,iter_swap,lexicographical_compare,max,min,mismatch,swap

6.4.3 copy

输出迭代器在后,最好用 memmove()。

6.4.4 copy_backward

输出迭代器在前,最好用 memmove()。



6.5 set 相关算法


STL 一共提供了四种与 set 相关的算法,分别是并集、交集、差集、对称差集。

6.5.1 set_union

6.5.2 set_intersection

6.5.3 set_difference

6.5.4 set_symmetric_difference



6.6 heap 算法


SGI STL 算法所在的头文件 <stl_algo.h> 内包含了 <stl_algo.h>



6.7 其他算法


6.7.1 单纯的数据处理

6.7.2 lower_bound

6.7.3 upper_bound

6.7.4 binary_search

6.7.5 next_permutation

6.7.6 pre_permutation

6.7.7 random_shuffle

6.7.8 partial_sort / partial_sort_copy

6.7.9 sort

6.7.10 equal_range

6.7.11 inplace_range

6.7.12 nth_element

6.7.13 merge sort



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值