STL 中,算法就是函数模板。STL 中的算法大多数是用来对容器进行操作的,如排序、 查找等。大部分算法都是在头文件 中定义的,还有些算法用于数值处理,定义在头文件 中。
STL 中的算法的分类方法。
1 . 不变序列算法。
2 . 变值算法。
3 . 删除算法。
4 . 变序算法。
5 . 排序算法。
6 . 有序区间算法。
7 . 数值算法。
有的算法可能同时属于多个分类。
实际上,大多数重载的算法都有两个版本,其中一个用==判断元素是否相等,或用<比较大小;而另一个版本多出来一个类型参数 Pred 以及函数形参 Pred op,该版本通过表达式op(x, y)的返回值是 true 还是 false 来判断 x 是否“等于”y 或者“小于”y。下面有两个版本的 min_element:
iterate min_element(iterate first, iterate last);
iterate min_element(iterate first, iterate last, Pred op);
min_element 返回区间中最小的元素。第一个版本用<比较大小,而第二个版本用自定义的比较器 op 来比较大小,op(x, y) 的值为 true,则说明 x 比 y 小。
类似 sort 和 min_element 这样有可自定义比较器版本的算法,在后文的表格中列出时,将加注“(可自定义比较器)”。