函数原型

UnaryProc for_each (InputIterator beg, InputIterator end, UnaryProc op)

* 调用 op(elem), [begin, end)区间的每一个元素
* 返回遍历执行后的op副本
* op可能修改元素, 与transform算法相似
* op的返回值将被忽略
* 算法复杂度: 线性, 每个元素都调用一次op

一、基本用法

1. 用lambda作为op

int main()
{vector<int> coll;INSERT_ELEMENTS(coll,1,9); // 插入1到9// 打印每个元素for_each (coll.cbegin(), coll.cend(),[](int elem){cout << elem << ’ ’;});cout << endl;
}

2. 普通函数作为op

void print(int elem) { cout << elem << ' '; }
for_each(coll.begin(), coll.end(), print);

3. 函数对象作为op

template <typename T>
class AddValue
{
private:T theValue;
public:AddValue(const T& v) : theValue(v) {}void operator() (T& elem) const { elem += theValue; // 元素加上一个值}
}
for_each (coll.begin(), coll.end(), AddValue<int>(10));

二、其他说明

1. C++11基于范围的for循环遍历每个元素更方便

for (auto elem : coll)
{cout << elem << ' ';
}

2. 可以利用for_each的返回值

class MeanValue
{
private:long num, sum;
public:MeanValue() : num(0), sum(0) {}void operator() (int elem) {num++;sum += elem;}operator double() {return static_cast<double>(sum) / static_cast<double>(num);}
};double mv = for_each(coll.begin(), coll.end(), MeanValue());
cout << "mean value: " << mv << endl;

for_each用法相关推荐

  1. boost::hana::for_each用法的测试程序

    boost::hana::for_each用法的测试程序 实现功能 C++实现代码 实现功能 boost::hana::for_each用法的测试程序 C++实现代码 #include <boo ...

  2. boost::fusion::for_each用法的测试程序

    boost::fusion::for_each用法的测试程序 实现功能 C++实现代码 实现功能 boost::fusion::for_each用法的测试程序 C++实现代码 #include < ...

  3. c++中for_each用法简单概述

    c++中for_each用法 核心部分: vector容器中for_each遍历算法: for_each(v.begin(),v.end(),MyPrint);void MyPrint(int val ...

  4. c++ for_each 用法

    主要参考:for_each的用法,转载自蕭鴻森的blog  (找不到原文的链接) 在接触C++特性Lambda时,接触到for_each,没想到这内容还挺多的,所以,先了解for_each,再学习La ...

  5. for_each用法示例

    文章目录 前言 示例demo 前言 由于偶然间发现for_each能使得避免使用for循环,大大简化了代码.这里简单记录下for_each的一个简单示例demo,方便温习. 示例demo #inclu ...

  6. C++11 for循环新用法、for_each 用法

    转载:https://blog.csdn.net/weixin_38500110/article/details/78766592 c++11 for循环多了新的语法 #include<iost ...

  7. std::for_each 用法

    描述:        遍历容器元素并执行指定函数. 定义: template< class InputIt, class UnaryFunction > UnaryFunction for ...

  8. C++for_each| bind1st | ptr_fun | std::function的用法

    c++ for_each 用法_小键233-CSDN博客 传入参数 要传入参数给global function ,需要使用 ptr_fun() 这个 function adapter 将global ...

  9. c++ for_each 的各种用法

    引入 先看一段不用for_each 的代码: #include<iostream> #include<vector> #include<algorithm> usi ...

最新文章

  1. python使用imbalanced-learn的SVMSMOTE方法进行上采样处理数据不平衡问题
  2. Java技术:为什么不推荐使用BeanUtils属性转换工具
  3. LSGO软件技术团队2015~2016学年第十六周(1214~1220)总结
  4. 随想录(uclibc的学习)
  5. epoll哪些触发模式_epoll的内部实现 百万级别句柄监听 lt和et模式非常好的解释...
  6. 2021年中国云项目组合管理(CPPM)市场趋势报告、技术动态创新及2027年市场预测
  7. 倒计时 1 天 | 年前不学习,年后无加薪!区块链开发者们不要纠结了!(内含赠票福利)...
  8. solidity教程:solidity语言入门
  9. PMP估算方法对比:参数估算、类比估算、自下而上估算、三点估算和粗略量级估算
  10. 华为鸿蒙os logo,华为鸿蒙OS Logo曝光:Powered by HarmonyOS
  11. oracle中同义词作用,Oracle同义词创建及其作用
  12. 真正牛逼的人,都是极简主义者!!
  13. ppt流程图字体太小_【PPT】几种处理字体的小方法,让PPT中的字体更好看
  14. PowerShell的基本使用方法
  15. CGAL的安装与在VS中的配置
  16. DDS的理解及IP核的使用
  17. 台湾各个大学硕博论文链接,很全,有的可以全文下载。
  18. 黑马程序员C++笔记
  19. 航空爱好者自问自答(2)
  20. 利用牛顿迭代法求平方根 .

热门文章

  1. 2022补天白帽大会议题征集启动!
  2. jqGrid合并rowspan
  3. Menu菜单用法全面讲解
  4. Unity接入通讯院获取oaid SDK
  5. 如何将原图和json融合_人脸融合接口
  6. 54岁 Switch 最强破解团队成员提前释放,仍要还任天堂 1450 万美元 !
  7. nginx+uwsgi
  8. window.external为空或不是对象
  9. ClientAbortException: java.io.IOException: Broken pipe 解决
  10. 莲雾文案:莲雾水果的文案,水果莲雾发圈文案