STL—常用算法
概述:
1、算法主要由头文件<algorithm>、<functional>、<numeric>组成
2、<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改等等
3、<functional>定义了一些模板类,用以声明函数对象
4、<numeric>体积很小,只包含几个在序列上面进行简单数学运算的模板函数
1、常用遍历算法
算法简介:
for_each //遍历容器、最常用的遍历算法
transform //搬运容器到另一个容器
1.1 for_each
功能描述:实现遍历容器
函数原型:for_each(iterator beg, iterator end,_func);
//遍历算法 遍历容器元素
//beg 开始迭代器
//end 结束迭代器
//_func 函数或者函数对象
1.2 transfrom
功能描述:搬运容器到另一个容器
函数原型:transfrom(iterator beg1, iterator end1,iterator beg2,_func);
//beg1 源容器开始迭代器
//end1 源容器结束迭代器
//beg2 目标容器开始迭代器
//_func 函数或者函数对象
2、常用的查找算法
算法简介:
find //查找元素
find_if //按条件查找
adjacent_find //查找相邻重复元素
binary_search //二分查找
count //统计元素个数
count_if //按条件统计元素个数
2.1 find
功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end();
函数原型:find( iterator beg,iterator end,value);
//查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器位置
//beg 开始迭代器
//end 结束迭代器
//value 查找元素
2.2 find_if
功能描述:按条件查找元素
函数原型:find_if( iterator beg,iterator end,_Pred);
//按值查找元素,找到返回指定元素的迭代器,找不到返回结束迭代器位置
//beg 开始迭代器
//end 结束迭代器
//_Pred 函数或者谓词(返回bool类型的仿函数)
2.3 adjacent_find
功能描述:查找相邻重复的元素
函数原型:adjacent_find( iterator beg,iterator end);
//查找相邻重复元素,返回相邻元素的第一个位置的迭代器
//beg 开始迭代器
//end 结束迭代器
2.4 binary_search
功能描述:查找指定的元素是否存在
函数原型:bool binary_search( iterator beg,iterator end,value);
//查找指定元素,查到返回true ,否则false
//beg 开始迭代器
//end 结束迭代器
//value 查找的元素
2.5 count
功能描述:统计元素个数
函数原型:count( iterator beg,iterator end,value);
//统计元素个数出现次数
//beg 开始迭代器
//end 结束迭代器
//value 统计的元素
2.6 count_if
功能描述:按条件统计元素个数
函数原型:count_if( iterator beg,iterator end,_Pred);
//按条件统计元素个数出现次数
//beg 开始迭代器
//end 结束迭代器
//_Pred 谓词
3、常用的排序算法
算法简介:
sort //对容器内元素进行排序
random_shuffle //洗牌 指定范围内的元素随机调整次序
merge //容器元素合并,并存储到另一个容器中
reverse //反转指定范围的元素
3.1 srot
功能描述:对容器进行排序
函数原型:sort(iterator beg,iterator end,_Pred)
//按值对容器内数据,进行升序排列
//beg 开始迭代器
//end 结束迭代器
//_Pred 谓词
3.2 random_shuffle
功能描述:洗牌 指定范围内的元素随机调整次序;加随机数种子才能真实随机,srand((unsigned int )time(NULL) ), 头文件#include<ctime>
函数原型:random_shuffle(iterator beg,iterator end)
//指定范围内的元素随机调整次序
//beg 开始迭代器
//end 结束迭代器
3.3 merge
功能描述:容器元素合并,并存储到另一个容器中
函数原型: merge(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
//指定范围内的元素随机调整次序
//beg1 容器1开始迭代器
//end1 容器1结束迭代器
//beg2 容器2开始迭代器
//end2 容器2结束迭代器
//dest 目标容器开始迭代器
3.4 reverse
功能描述:将容器内元素进行翻转
函数原型:reverse(iterator beg,iterator end)
//反转指定范围的元素
//beg 开始迭代器
//end 结束迭代器
4、常用拷贝和替换算法
算法简介:
copy //容器内指定范围的元素拷贝到另一个容器中
replace //将容器内指定范围的旧元素修改为新元素
replace_if //容器内指定范围满足条件的元素替换为新元素
swap //互换两个容器的元素
4.1 copy
功能描述:容器内指定范围的元素拷贝到另一个容器中
函数原型:copy(iterator beg,iterator end,iterator dest)
//容器内指定范围的元素拷贝到另一个容器中
//beg 开始迭代器
//end 结束迭代器
//dest 目标容器开始迭代器
4.2 replace
功能描述:将容器内指定范围的旧元素修改为新元素
函数原型:replace(iterator beg,iterator end,oldvalue,newvalue)
//将容器内指定范围的旧元素修改为新元素
//beg 开始迭代器
//end 结束迭代器
//oldvalue 旧元素
//newvalue 新元素
4.3 replace_if
功能描述:将区间内满足条件的元素,修改为新元素
函数原型:replace_if(iterator beg,iterator end,
_pred,newvalue)
//按条件替换元素,满足条件的替换成指定元素
//beg 开始迭代器
//end 结束迭代器
//_pred 谓词
//newvalue 新元素
4.4 swap
功能描述:互换两个容器的元素
函数原型:swap(container c1,container c2)
//互换两个容器的元素
//c1 容器1
//c2 容器2
5、常用算术生成算法
注意:算术生成算法属于小型算法,使用时包含的头文件为#include<numeric>
算法简介:
accumulate //计算容器元素累计总和
fill //向容器中添加元素
5.1 accumulate
功能描述:计算区间内容器元素累计总和
函数原型:accumulate(iterator beg,iterator end,value)
//计算容器内累计总和
//beg 开始迭代器
//end 结束迭代器
//value 起始值
5.2 fill
功能描述:向容器中填充指定元素
函数原型:fill(iterator beg,iterator end,value)
//向容器中填充指定元素
//beg 开始迭代器
//end 结束迭代器
//value 起始值
6、常用集合算法
算法简介:
set_intersection //求两个容器的交集
set_union //求两个容器的并集
set_difference //求两个容器的差集
6.1 set_intersection
功能描述:求两个集合的交集
函数原型: set_intersection(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
//求两个集合的交集
//注意:两个集合必须是有序序列
//beg1 容器1开始迭代器
//end1 容器1结束迭代器
//beg2 容器2开始迭代器
//end2 容器2结束迭代器
//dest 目标容器开始迭代器
6.2 set_union
功能描述:求两个集合的并集
函数原型: set_union(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
//求两个集合的并集
//注意:两个集合必须是有序序列
//beg1 容器1开始迭代器
//end1 容器1结束迭代器
//beg2 容器2开始迭代器
//end2 容器2结束迭代器
//dest 目标容器开始迭代器
6.3 set_difference
功能描述:求两个集合的差集
函数原型: set_difference(iterator beg1,iterator end1,iterator beg2,iterator end3,iterator dest)
//求两个集合的差集
//注意:两个集合必须是有序序列
//beg1 容器1开始迭代器
//end1 容器1结束迭代器
//beg2 容器2开始迭代器
//end2 容器2结束迭代器
//dest 目标容器开始迭代器

浙公网安备 33010602011771号