C++基础(15)——STL常用算法(遍历和查找)

前言

本文介绍了C++中STL常用遍历和查找算法。

9.1:常用遍历算法(for_each、transform)

9.1.1:foreach

for_each:遍历容器,transform:搬运一个容器中的数据到另一个容器中

for_each中使用普通函数只用传函数名,如果用自定义的仿函数那就要传一个匿名的函数对象

C++基础(15)——STL常用算法(遍历和查找)_第1张图片

for_each函数原型

C++基础(15)——STL常用算法(遍历和查找)_第2张图片

9.1.2:transform

transform中比较需要注意的是第4个参数,目标容器要提前指定好空间要不然会塞不进去

C++基础(15)——STL常用算法(遍历和查找)_第3张图片

 transfrom的函数原型

C++基础(15)——STL常用算法(遍历和查找)_第4张图片

C++基础(15)——STL常用算法(遍历和查找)_第5张图片

对匿名对象的一些疑问,在main函数中调用MyFunc()会创建一个对象,会调用类的无参构造函数和析构函数

C++基础(15)——STL常用算法(遍历和查找)_第6张图片

9.2:常见查找算法(find、find_if、adjacent_find、binary_search、count、count_if)

9.2.1:find

find:查找指定元素,找到则返回指定元素的迭代器,找不到返回结束迭代器end()

查找系统自带的数据类型

C++基础(15)——STL常用算法(遍历和查找)_第7张图片

查找自定义数据类型

C++基础(15)——STL常用算法(遍历和查找)_第8张图片

9.2.2:find_if

函数原型

C++基础(15)——STL常用算法(遍历和查找)_第9张图片

使用find_if的时候要对()运算符进行重载,且返回值要是bool类型的,return 的条件在operator()中实现。与find不同的是,find要对==运算符进行重载,而find_if需要的是谓词

find_if查找系统在带数据类型

C++基础(15)——STL常用算法(遍历和查找)_第10张图片

find_if查找自定义数据

C++基础(15)——STL常用算法(遍历和查找)_第11张图片

9.2.3:adjacent_find

用于查找相邻重复的元素

C++基础(15)——STL常用算法(遍历和查找)_第12张图片

C++基础(15)——STL常用算法(遍历和查找)_第13张图片

9.2.4:binary_search

二分法查找要先让数据有序,可以配合sort函数一起使用,无序序列不可以使用。

C++基础(15)——STL常用算法(遍历和查找)_第14张图片

9.2.5:count

返回值是出现的数据次数

C++基础(15)——STL常用算法(遍历和查找)_第15张图片

统计系统自定义数据类型

C++基础(15)——STL常用算法(遍历和查找)_第16张图片

统计自定义数据类型,也是差不多的操作,重写==运算符

C++基础(15)——STL常用算法(遍历和查找)_第17张图片

9.2.6:count_if

用法和find_if是一样的

C++基础(15)——STL常用算法(遍历和查找)_第18张图片

总结

以上是本文的全部内容,非常感谢你能看到这。

你可能感兴趣的:(C++学习,c++,开发语言)