cb35a_c++_STL_算法_for_each

for_each(b,e,p)
使用for_each()算法遍历数据
使用for_each()和函数对象修改数据
使用for_each()的返回值

//转换函数operator double()
//参考:https://www.cnblogs.com/txwtech/p/12115391.html
//static_cast<double>强制类型转换:

MeanValue mv=for_each(ivec.begin(), ivec.end(), MeanValue());//for_each的返回值给到mv,mv里面保留了 num与sum的结果。
cout << "平均值:" << mv.value() << endl;

double result= for_each(ivec.begin(), ivec.end(), MeanValue());
//for_each的返回值给到result,result定义为了doubule,它自动调用类型转换函数operator double()
cout << "平均值2:" << result << endl;

 /*cb35a_c++_STL_算法_for_each

 for_each(b,e,p)
使用for_each()算法遍历数据
使用for_each()和函数对象修改数据
使用for_each()的返回值 //转换函数operator double()
//参考:https://www.cnblogs.com/txwtech/p/12115391.html
//static_cast<double>强制类型转换: MeanValue mv=for_each(ivec.begin(), ivec.end(), MeanValue());//for_each的返回值给到mv,mv里面保留了 num与sum的结果。
cout << "平均值:" << mv.value() << endl; double result= for_each(ivec.begin(), ivec.end(), MeanValue());
//for_each的返回值给到result,result定义为了doubule,它自动调用类型转换函数operator double()
cout << "平均值2:" << result << endl; */ #include <iostream>
#include <algorithm>
#include <vector>
using namespace std; void print(int elem)
{
cout << elem << ' ';
}
template<class T>
class AddValue
{
private:
T theValue;
public:
AddValue(const T& v) :theValue(v) {}
void operator()(T& elem) const
{
elem += theValue;
}
};
class MeanValue
{
private:
long num;
long sum;
public:
MeanValue() :num(), sum() {}
void operator()(int elem)//operator就是函数对象
{
num++;
sum += elem;
}
double value()
{
return static_cast<double>(sum) / static_cast<double>(num);
//static_cast<double>强制类型转换:
//https://blog.csdn.net/txwtech/article/details/104148011
} //类型转换函数operator double(),double运算符重载
//参考:https://www.cnblogs.com/txwtech/p/12115391.html
operator double()
{
return static_cast<double>(sum) / static_cast<double>(num);
} }; int main()
{
vector<int> ivec;
for (int i = ; i <= ; ++i)
ivec.push_back(i);
for_each(ivec.begin(), ivec.end(), print);
cout << endl;
for_each(ivec.begin(), ivec.end(), AddValue<int>());//函数对象,自动调用operator
for_each(ivec.begin(), ivec.end(), print);
cout << endl;
for_each(ivec.begin(), ivec.end(), AddValue<int>( *ivec.begin()));
for_each(ivec.begin(), ivec.end(), print);
cout << endl;
// MeanValue()是函数对象,返回也是函数对象
MeanValue mv=for_each(ivec.begin(), ivec.end(), MeanValue());//for_each的返回值给到mv,mv里面保留了 num与sum的结果。
cout << "平均值:" << mv.value() << endl; double result= for_each(ivec.begin(), ivec.end(), MeanValue());
//for_each的返回值给到result,result定义为了doubule,它自动调用类型转换函数operator double()
cout << "平均值2:" << result << endl; return ;
}

最新文章

  1. 《看板与Scrum》读书笔记
  2. JavaWeb 学习0010-今日问题 2016-12-3
  3. App Store审核被拒的23个理由
  4. 用javascript去掉字符串空格的办法
  5. LintCode &quot;Copy Books&quot;
  6. 23. Merge k Sorted Lists
  7. Nginx 的 RTMP 模块的在线统计功能 stat 在 multi-worker 模式下存在 Bug
  8. Android精品课程—PullToRefresh 下拉刷新
  9. 读取pdf文件 .选择了itextsharp 库
  10. [Redux] React Todo List Example (Adding a Todo)
  11. RDLC 聚合函数按条件求和,显示&quot;错误号&quot;
  12. 地大邀请赛d
  13. .NET 通用高扩展性的细粒度权限管理架构(webApi/Mvc)
  14. headfirst设计模式(4)—工厂模式
  15. HBase &#183; 印象
  16. 【转】Python 之 元类
  17. centos6.5 squid安装
  18. java基本数据类型转换溢出问题
  19. POJ 2594 Treasure Exploration (Floyd+最小路径覆盖)
  20. 20165309 实验一 Java开发环境的熟悉

热门文章

  1. JS获取两个日期间的所有日期
  2. Istio DestinationRule 目标规则
  3. Maven快速入门(一)Maven介绍及环境搭建
  4. S32K142学习记录_day1
  5. [JavaWeb基础] 012.Struts2 自定义标签使用
  6. [C#打包部署教程]002.VS2012 + Dotfuscator
  7. 使用docker方式构建prometheus监控的学习
  8. Sublime Text3 注册码(Windows/Build 3176版本)| 开发工具
  9. Spring Boot笔记(四) springboot 集成 @Scheduled 定时任务
  10. Java实现 蓝桥杯 基础练习 数列特征