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



猜你喜欢

转载自blog.csdn.net/qq_30534935/article/details/102880108