概述
1、算法主要是由头文件<algorithm><functional><numeric>组成
一、常用遍历算法
1、for_each(iterator begin, iterator end, _func)遍历容器元素(最常用遍历算法)
注:_func是函数或者函数对象
2、transform(iterator beg1, iterator end1, iterator beg2, _func)搬运容器到另一个容器中
注:搬运的目标容器必须要提前开辟空间,否则无法正常搬运
二、常用查找算法
1、find(iterator beg, iterator end, value)查找元素
注:找到返回指定元素的迭代器,找不到返回迭代器end()
2、find_if(iterator beg, iterator end, _Pred)按条件查找元素
注:找到返回指定元素位置的迭代器,找不到返回结束位置的迭代器
注:_Pred是函数或者谓词,谓词可以理解为返回类型为bool类型的仿函数
3、adjacent_find(iterator beg, iterator end)查找相邻的重复元素
注:找到返回相邻元素的第一个位置的迭代器
4、binary_search(iterator beg, iterator end, value)查找指定元素是否存在
注:返回类型为bool,找到返回true,没找到返回false
注:只能用在有序序列中,底层为二分查找法
5、count(iterator beg, iterator end, value)按值统计元素的个数
注:返回类型为int型
6、count_if(iterator beg, iterator end, _Pred)按条件统计元素的个数
注:返回类型为int型
三、常用排序算法
1、sort(iterator beg, iterator end, _Pred)对容器内元素进行排序(开发中最常用的算法之一)
注:默认升序排列,可改变排列规则
2、random_shuffle(iterator beg, iterator end)指定范围内元素随机调整次序
注:使用时记得加随机数种子
3、merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator beg3)将两个容器元素合并,储存到另一容器中
注:两个容器必须是有序的,目标容器必须提前开辟空间
4、reverse(iterator beg, iterator end)将容器区间内的元素进行反转
四、常用拷贝和替换算法
1、copy(iterator beg, iterator end, iterator dest)将容器内指定范围的元素拷贝到另一容器中
注:目标容器需要提前开辟空间
2、replace(iterator beg, iterator end, oldvalue, newvalue)将容器指定范围内的旧元素替换为新元素
3、replace_if(iterator beg, iterator end, _Pred, newvalue)将指定区域内满足条件的元素替换为新元素
4、swap(container c1, container c2)互换两个容器中的元素
注:无需提前开辟空间,但交换的两个容器的类型要相同
五、常用算数生成算法
头文件<numeric>
1、accumulate(iterator beg, iterator end, value)计算区间内容器元素的累计总和
注:返回值类型是int型
2、fill(iterator beg, iterator end, value)向容器中填充指定的元素
六、常用集合算法
1、set_intersection(iterator beg1, iterator end2, iterator beg2m iterator end2, iterator beg3)求两个容器的交集
注:两个集合必须是有序序列
注:要取两个集合中比较小的一个给新容器开辟空间,可用min(a,b)函数选较小的
注:返回目标容器的最后一个元素的迭代器
2、set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator beg3)求两个集合的并集
注:两个集合必须是有序序列
注:两个容器之和给新容器开辟空间
注:返回目标容器中最后一个元素的迭代器
3、set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iteraotr beg3)求两个集合的差集
注:两个集合必须是有序序列
注:取两个容器中较大的一个给新容器开辟空间
注:返回值是目标容器中最后一个元素的位置