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