STL学习笔记(4)- STL算法导论for_each和仿函数

STL提供了 for_each 函数,对容器某个范围内的提供统一的函数调用的函数。
下面是一个 for_each 的基本用法示例,将数组 vector 中的每一个元素内容* 2
使用 for_each 时,需要使用头文件 <algorithm>
具体代码如下:

程序的运行结果如下:
40
60
20
80

其中 Func 就是一个仿函数,我们把重载了运算符 () 的类叫做仿函数。当然我们也可以使用lambda表达式,实际上lambda表达式就是一个匿名的仿函数。

对于for_each的实现,基本代码如下:

上面的代码并不难,最关键的代码为下面这句

可以看出, for_each 函数对给入范围内的值都做了一遍我们输入的函数操作。

  • _Fn1 for_each(_InIt _First, _InIt _Last, _Fn1 _Func)
  • _First 和 _Last 为给定的范围
  • _Func 输入的回掉函数,一般为仿函数
  • 返回值为,处理后的输入反函数对象

为什么要使用仿函数呢?我们在当我们处理数据的时候想要完成其他的操作,这个时普通的回掉函数无法完成的,比如上面的例子除了对数组中的元素都 * 2 之外还要对计算出最大值、最小值、和等信息。我们就可以将代码改写为如下:

运行结果为:
40
60
20
80
——————————————
20 80 200

You May Also Like

About the Author: admin

喜欢编程、爱游戏,更爱生活。

发表评论

电子邮件地址不会被公开。