标签:条件 形参 功能 false 头文件 删除 作用 rem 完成
在 STL 中,算法就是函数模板。STL 中的算法大多数是用来对容器进行操作的,如排序、 查找等。大部分算法都是在头文件 <algorithm> 中定义的,还有些算法用于数值处理,定义在头文件 <numeric> 中。
STL 提供能在各种容器中通用的算法(大约有70种),如插入、删除、查找、排序等。算法就是函数模板。算法通过迭代器来操纵容器中的元素。
许多算法操作的是容器上的一个区间(也可以是整个容器),因此需要两个参数,一个是区间起点元素的迭代器,另一个是区间终点元素的后面一个元素的迭代器。例如,排序和查找算法都需要这两个参数来指明待排序或待查找的区间。有的算法返回一个迭代器。例如,find 算法在容器中查找一个元素,并返回一个指向该元素的迭代器。算法可以处理容器,也可以处理普通的数组。
变值算法
删除算法
变序算法
排序算法
有序区间算法
数值算法
accumulate
copy:将一个容器的内容复制到另一个容器。
remove:在容器中删除一个元素。
random_shuffle:随机打乱容器中的元素。
fill:用某个值填充容器。
find:在容器中查找元素。
count_if:统计容器中符合某种条件的元素的个数。
find 算法和其他算法一样都是函数模板。find 模板的原型如下:
template <class InIt, class T>
InIt find(InIt first, InIt last, const T& val);
其功能可以是在迭代器 first、last 指定的容器的一个区间 [first, last) 中,按顺序查找和 val 相等的元素。如果找到,就返回该元素的迭代器;如果找不到,就返回 last。[first, last) 这个区间是一个左闭右开的区间,即 last 指向的元素其实不在此区间内。
“其功能可以是”:因为模板只是一种代码形式,这种代码形式具体能完成什么功能,取决于程序员对该模板写法的了解及其想象力。按照语法,调用 find 模板时,first 和 last 只要类型相同就可以,不一定必须是迭代器。
find 模板使用==运算符判断元素是否相等。因此,如果 [first, last) 区间中存放的是对象,则==运算符应该被适当重载,使得两个对象可以用==运算符比较。STL 中还有一个常用的算法 sort,用于对容器排序,其原型为:
template<class_RandIt>
void sort(_RandIt first, _RandIt last);
该算法可以用来对区间 [first, last) 从小到大进行排序。
实际上,大多数重载的算法都有两个版本,其中一个用==判断元素是否相等,或用<比较大小;而另一个版本多出来一个类型参数 Pred 以及函数形参 Pred op,该版本通过表达式op(x, y)的返回值是 true 还是 false 来判断 x 是否“等于”y 或者“小于”y。
标签:条件 形参 功能 false 头文件 删除 作用 rem 完成
原文地址:https://www.cnblogs.com/Sheenagh/p/12217202.html