0
点赞
收藏
分享

微信扫一扫

C++STL常用算法系列回顾

快乐与微笑的淘气 2022-04-25 阅读 84
c++

概述

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)求两个集合的差集

注:两个集合必须是有序序列

注:取两个容器中较大的一个给新容器开辟空间

注:返回值是目标容器中最后一个元素的位置

举报

相关推荐

C++STL算法

C++STL

C++STL入门

C++STL~~list

C++STL(2)

c++STL容器

C++STL 容器

0 条评论