cb35a_c++_STL_算法_for_each
2024-09-07 16:56:21
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 ;
}
最新文章
- 《看板与Scrum》读书笔记
- JavaWeb 学习0010-今日问题 2016-12-3
- App Store审核被拒的23个理由
- 用javascript去掉字符串空格的办法
- LintCode ";Copy Books";
- 23. Merge k Sorted Lists
- Nginx 的 RTMP 模块的在线统计功能 stat 在 multi-worker 模式下存在 Bug
- Android精品课程—PullToRefresh 下拉刷新
- 读取pdf文件 .选择了itextsharp 库
- [Redux] React Todo List Example (Adding a Todo)
- RDLC 聚合函数按条件求和,显示";错误号";
- 地大邀请赛d
- .NET 通用高扩展性的细粒度权限管理架构(webApi/Mvc)
- headfirst设计模式(4)—工厂模式
- HBase &#183; 印象
- 【转】Python 之 元类
- centos6.5 squid安装
- java基本数据类型转换溢出问题
- POJ 2594 Treasure Exploration (Floyd+最小路径覆盖)
- 20165309 实验一 Java开发环境的熟悉
热门文章
- JS获取两个日期间的所有日期
- Istio DestinationRule 目标规则
- Maven快速入门(一)Maven介绍及环境搭建
- S32K142学习记录_day1
- [JavaWeb基础] 012.Struts2 自定义标签使用
- [C#打包部署教程]002.VS2012 + Dotfuscator
- 使用docker方式构建prometheus监控的学习
- Sublime Text3 注册码(Windows/Build 3176版本)| 开发工具
- Spring Boot笔记(四) springboot 集成 @Scheduled 定时任务
- Java实现 蓝桥杯 基础练习 数列特征