算法主要由头文件<algorithm><functional><numeric>组成。
<algorithm>是所有STL头文件中最大的一个,范围涉及到比较,交换,查找,遍历操作,复制,修改等等
<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数
<functional>定义了一些模板类,用以声明函数对象
for_each()函数:实现遍历容器
函数原型:for_each(iterator beg,iterator end,_func);
//遍历算法,遍历容器元素
//beg开始迭代器
//end结束迭代器
//_func函数或者函数对象
transform()函数:搬运容器到另一个容器中
函数原型:transform(iterator beg1,iterator end1,iterator beg2,_func);
//beg1原容器开始迭代器
//end1原容器结束迭代器
//beg2目标容器开始迭代器
//_func函数或者函数对象
常用查找算法:
find //查找元素
find_if //按条件查找元素
adjacent_find //查找相邻重复元素
binary_search //二分查找法
count //统计元素个数
count_if //按条件统计元素个数
find()函数:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()
函数原型:find(iterator beg,iterator end,value);
//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
//beg开始迭代器
//end结束迭代器
//value查找的元素
find_if()函数:按条件查找元素
函数原型:find_if(iterator beg,iterator end,_pred);
//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
//beg开始迭代器
//end结束迭代器
//_pred函数或者谓词(返回bool类型的仿函数)
adjacent_find()函数:查找相邻重复元素
函数原型:adjacent_find(iterator beg,iterator end);
//返回重复元素第一个位置的迭代器
//beg开始迭代器
//end结束迭代器
binary_search()函数:查找指定元素是否存在 (二分查找)
函数原型:bool binary_search(iterator begin(),iterator end(),value);
//begin()开始迭代器
//end()结束迭代器
//value查找的值
注意:在无序序列中不可用
count()函数:统计元素个数
函数原型:count(iterator beg,iterator end,value);
//统计元素出现的次数
//beg开始迭代器
//end结束迭代器
//value统计的元素
count_if()函数:按条件统计元素个数
函数原型:count_if(iterator begin(),iterator end(),_pred);
//按条件统计元素出现的次数
//beg开始迭代器
//end结束迭代器
//_pred谓词
sort()函数:对容器内元素排序
函数原型:sort(iterator beg,iterator end,_pred);//参数3不写按照默认方式排列
//按值查找元素,找到返回指定位置迭代器,找不到返回结束位置迭代器
//beg开始迭代器
//end结束迭代器
//_pred谓词
random_shuffle()函数:指定范围内的元素随机调整次序
函数原型:random_shuffle(iterator beg,iterator end);
//beg开始迭代器
//end结束迭代器
merge函数():两个容器元素合并,并存储到另一个容器中
函数原型:merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest,_pred);
//容器元素合并,并存储到另一个容器中
//注意:两个容器必须是有序的
//beg1,容器1开始迭代器
//end1,容器1结束迭代器
//beg2,容器2开始迭代器
//end2,容器2结束迭代器
//dest,目标容器开始迭代器
//_pred,谓词 可以省略,省略时默认升序
reverse()函数:将容器内元素进行反转
函数原型:reverse(iterator beg,iterator end)
//反转指定范围的元素
//beg开始迭代器
//end结束迭代器
copy()函数:容器内指定范围的元素拷贝到另一个容器中
函数原型:copy(iterator beg,iterator end,iterator dest)
//beg开始迭代器
//end结束迭代器
//dest目标起始迭代器
replace()函数:将容器内指定范围的旧元素修改为新元素
函数原型:replace(iterator beg,iterator end,oldvalue,newvalue)
//beg开始迭代器
//end结束迭代器
//oldvalue旧元素
//newvalue新元素
replace_if()函数:将区间内满足条件的元素,替换成指定元素
函数原型:replace_if(iterator beg,iterator end,_pred,newvalue)
//beg开始迭代器
//end结束迭代器
//_pred谓词
//newvalue替换的新元素
swap()函数:互换两个容器的元素
函数原型:swap(container c1,container c2)
//c1容器1
//c2容器2
accumulate()函数:计算区间内容器元素累计总和
函数原型:accumulate(iterator beg,iterator end,value)
注意:算术生成算法属于小型算法,使用时包含的头文件为#include <numeric>
//beg开始迭代器
//end结束迭代器
//value起始值
fill()函数:向容器中填充指定元素
函数原型:fill(iterator beg,iterator end,value)
//beg开始迭代器
//end结束迭代器
//value填充的值
set_intersection()函数:求两个集合的交集
函数原型:set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest)
注意:两个集合必须是有序序列
//beg1容器1开始迭代器
//end1容器1结束迭代器
//beg2容器2开始迭代器
//end2容器2结束迭代器
//dest目标容器开始迭代器
set_union()函数:求两个集合并集
函数原型:set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest)
注意:两个集合必须是有序序列
//beg1容器1开始迭代器
//end1容器1结束迭代器
//beg2容器2开始迭代器
//end2容器2结束迭代器
//dest目标容器开始迭代器
set_difference()函数:求两个集合的差集
函数原型:set_difference(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest)
注意:两个集合必须是有序序列
//beg1容器1开始迭代器
//end1容器1结束迭代器
//beg2容器2开始迭代器
//end2容器2结束迭代器
//dest目标容器开始迭代器