<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。
<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括假发和惩罚在序列上的一些操作。
<functional>中则定义了一些模板类用以声明函数对象。
STL提供了大量实现算法的函数模板,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能,从而大大地提升效率。
adjacent_find();在迭代器对标识元素范围内查找一堆相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。
例如:vecInt使用vector<int>声明的容器,现已包含1,2,2,4,5
it = adjacent_find(vecInt.begin(),vecInt.end());
此时*it == 2;
binary_search:在有序的序列中
查找value,找到则返回true,不可在无序序列中使用
1 bool bfound = binary_search(setInt.begin(),setInt.end(),53);
count:利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数
1 int nCount = count(vecInt.begin(),vecInt.end(),elem);
count_if:利用输入函数,对标志范围内的元素进行比较操作,返回结果为true的个数
merge:合并两个容器
merge(vecIntA.begin(),vecIntA.end(),vecIntB.begin(),vecIntB.end(),vecIntC.begin());
sort:排序(默认升序)
sort(vecInt.begin(),vecInt.end());
random_shuffle:随即洗一次数据
random_shuffle(vecInt.begin(),vecInt.end());
reverse:倒序
reverse(vecInt.begin(),vecInt.end());
copy:拷贝复制函数
copy(vecIntA.begin(),vecIntA.end(),vecIntB.begin());
replase:
replace(vecIntA.begin(),vecIntA.end(),3,8));//3替换成8,其中3可以是函数满足条件的被替换
accumulate:求和
fill:填充某个数值
set_union:重复的部分没有进去
set_intersection:交集
set_difference:差集
for_each:回调函数去执行每一个元素
transform:调用之后改变自身值并写回到指定容器