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$
浙公网安备 33010602011771号