1、for_each(inIterBegin, inIterEnd, ufunc) :用函数对象ufunc调用序列中每一项元素
比如,输出序列的全部元素,可以这样写:
std::vector<int> c; c.reserve(10); //向c中添加元素 for (int i = 0; i < 10; i++) { c.push_back(i); } //输出c中所有元素 std::for_each(c.begin(), c.end(), [](int element){ std::cout<<element<<","; });
//打印结果:0,1,2,3,4,5,6,7,8,9
2、transform(InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperation op) :对序列中每一个元素,执行一元操作op,结果写入另一序列中
比如,把c1中的元素全部乘以10后,放入c2中,可以这样写:
std::vector<int> c1; std::vector<int> c2; c2.resize(10); //!这个必须要有,具体参考《Effective STL》中的条款30:确保目标区间足够大 //向c1中添加元素 for (int i = 0; i < 10; i++) { c1.push_back(i); } //把c1中的每个元素乘以10后存入c2中 std::transform(c1.begin(), c1.end(), c2.begin(), [](int element){ return element * 10; }); //输出c2中的元素 for (auto var : c2) { std::cout << var << ","; }
//打印结果:0,10,20,30,40,50,60,70,80,90
3、transform (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, OutputIterator result,BinaryOperation binary_op):对两个序列中对应的每一对元素,执行二元操作binary_op,结果写入另一序列中
比如,把上面的c1,c2中对应元素之和存入c3中,可以这样写:
std::vector<int> c1; std::vector<int> c2; std::vector<int> c3; c2.resize(10); //!这个必须要有,具体参考《Effective STL》中的条款30:确保目标区间足够大 c3.resize(10); //向c1中添加元素 for (int i = 0; i < 10; i++) { c1.push_back(i); } //把c1中的每个元素乘以10后存入c2中 std::transform(c1.begin(), c1.end(), c2.begin(), [](int element){ return element * 10; }); //把c1、c2中每个元素对应的和存入c3中 std::transform(c1.begin(), c1.end(), c2.begin(), c3.begin(), [](int element1, int element2){ return element1 + element2; }); for (auto var : c3) { std::cout << var << ","; } //打印结果:0,11,22,33,44,55,66,77,88,99
原文:http://www.cnblogs.com/dongerlei/p/5140077.html