STL算法是通用的:每个算法都适合于若干种不同的数据结构,而不仅仅能够用于一种数据结构。算法不是直接使用容器作为参数,而是使用迭代器类型。这样用户就可以自己在自己定义的数据结构上应用这些算法,仅仅需要这些自定义的容器的迭代器类型满足算法要求。STL中几乎所有算法的头文件都是<algorithm>。
STL标准模板库中的算法大致可以分为4类。第一类是非可变序列的算法(Non-modifying sequence operations)。通常,这类算法在对容器进行操作的时候不会改变容器的内容。第二类是可变序列的算法(modifying sequence operations),这类算法一般会改变它们所操作的内容。第三类是排序相关算法,包括排序算法和合并算法、二分查找算法以及有序序列的集合操作算法等。最后一类是通用数值算法,这类算法的数量比较少。
下面对这些类型算法的一个统计列表:
一、非可变序列的算法(Non-modifying sequence operations)
(1)for_each 对区间内的每个元素进行某操作
(2)find 循环查找
(3)find_if 循环查找符合特定条件者
(4)find_end 查找某个子序列的最后一次出现的位置
(5)find_first_of 查找某些元素的首次出现的位置
(6)adjacent_find 查找相邻而重复的元素
(7)count 计数
(8)count_if 在特定条件下计数
(9)mismatch 找出不匹配点
(10)equal 判断两个区间是否相等
(11)search 查找某个子序列
(12)search_n 查找连续发生n次的自序列
下面对本类的每个元素做相应的解释,并且给出一些例子,以作使用参考,接下一篇.......
说明:本系列的文章来自两个地方:(1)《C++语言程序设计》第四版 (2)C/C++官网,
记录这些的主要目的是:想记下自己看到的东西,写一下加深印象,也为了以后方便查找。最重要的是记一些笔记心里感觉比较踏实,如若有不对的地方,请指正,呵呵。