for_each笔记

Posted on 2019-07-28 10:44  asiarabbit  阅读(167)  评论(0)    收藏  举报

for_each是一种函数模板,用于将用户传入的函数依次作用于容器类中指定区间的元素上,其定义大致如下:

1 template<typename InputIterator, typename Function>
2 Function for_each(InputIterator beg, InputIterator end, Function f){
3     while(beg != end)
4         f(*beg++);
5 }

其中++的优先级大于解除引用。beg和end是标准模板库(STL)的两个迭代器(iterator),指代容器的开始和结束位置,区间可表示为[beg,end), 即包含开头不包含结尾。

该函数模板对传入的函数也有要求,即必须可以接受1个容器内储存的数据类型。

使用该函数模板需要包含头文件<algorithm>. 用法举例:

 1 // usage of for_each
 2 #include <iostream>
 3 #include <vector>
 4 #include <algorithm>
 5 
 6 using std::vector;
 7 
 8 void show(int a){
 9     std::cout << a << " - ";
10 }
11 
12 int main(){
13     vector<int> v = {1,2,3,4,5};
14     std::for_each(v.begin(), v.begin() + 5, show);
15     std::cout << std::endl;
16     
17     return 0;
18 }

 

输出结果如下:

asia@MiPC:ch16$ g++ for_each.C 
asia@MiPC:ch16$ ./a.out
1 - 2 - 3 - 4 - 5 - 
asia@MiPC:ch16$