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;

  1. /*cb35a_c++_STL_算法_for_each
  2.  
  3. for_each(b,e,p)
  4. 使用for_each()算法遍历数据
  5. 使用for_each()和函数对象修改数据
  6. 使用for_each()的返回值
  7.  
  8. //转换函数operator double()
  9. //参考:https://www.cnblogs.com/txwtech/p/12115391.html
  10. //static_cast<double>强制类型转换:
  11.  
  12. MeanValue mv=for_each(ivec.begin(), ivec.end(), MeanValue());//for_each的返回值给到mv,mv里面保留了 num与sum的结果。
  13. cout << "平均值:" << mv.value() << endl;
  14.  
  15. double result= for_each(ivec.begin(), ivec.end(), MeanValue());
  16. //for_each的返回值给到result,result定义为了doubule,它自动调用类型转换函数operator double()
  17. cout << "平均值2:" << result << endl;
  18.  
  19. */
  20.  
  21. #include <iostream>
  22. #include <algorithm>
  23. #include <vector>
  24. using namespace std;
  25.  
  26. void print(int elem)
  27. {
  28. cout << elem << ' ';
  29. }
  30. template<class T>
  31. class AddValue
  32. {
  33. private:
  34. T theValue;
  35. public:
  36. AddValue(const T& v) :theValue(v) {}
  37. void operator()(T& elem) const
  38. {
  39. elem += theValue;
  40. }
  41. };
  42. class MeanValue
  43. {
  44. private:
  45. long num;
  46. long sum;
  47. public:
  48. MeanValue() :num(), sum() {}
  49. void operator()(int elem)//operator就是函数对象
  50. {
  51. num++;
  52. sum += elem;
  53. }
  54. double value()
  55. {
  56. return static_cast<double>(sum) / static_cast<double>(num);
  57. //static_cast<double>强制类型转换:
  58. //https://blog.csdn.net/txwtech/article/details/104148011
  59. }
  60.  
  61. //类型转换函数operator double(),double运算符重载
  62. //参考:https://www.cnblogs.com/txwtech/p/12115391.html
  63. operator double()
  64. {
  65. return static_cast<double>(sum) / static_cast<double>(num);
  66. }
  67.  
  68. };
  69.  
  70. int main()
  71. {
  72. vector<int> ivec;
  73. for (int i = ; i <= ; ++i)
  74. ivec.push_back(i);
  75. for_each(ivec.begin(), ivec.end(), print);
  76. cout << endl;
  77. for_each(ivec.begin(), ivec.end(), AddValue<int>());//函数对象,自动调用operator
  78. for_each(ivec.begin(), ivec.end(), print);
  79. cout << endl;
  80. for_each(ivec.begin(), ivec.end(), AddValue<int>( *ivec.begin()));
  81. for_each(ivec.begin(), ivec.end(), print);
  82. cout << endl;
  83. // MeanValue()是函数对象,返回也是函数对象
  84. MeanValue mv=for_each(ivec.begin(), ivec.end(), MeanValue());//for_each的返回值给到mv,mv里面保留了 num与sum的结果。
  85. cout << "平均值:" << mv.value() << endl;
  86.  
  87. double result= for_each(ivec.begin(), ivec.end(), MeanValue());
  88. //for_each的返回值给到result,result定义为了doubule,它自动调用类型转换函数operator double()
  89. cout << "平均值2:" << result << endl;
  90.  
  91. return ;
  92. }

cb35a_c++_STL_算法_for_each的更多相关文章

  1. cb51a_c++_STL_算法_根据第n个元素排序nth_element

    cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...

  2. cb50a_c++_STL_算法_局部排序partial_sort

    cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...

  3. cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort

    cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort sort(b,e) sort(b,e,p) stable_sort(b,e) stable_sort(b,e,p) ...

  4. cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition

    cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...

  5. cb47a_c++_STL_算法_排列组合next_prev_permutation

    cb47a_c++_STL_算法_排列组合next_prev_permutation 使用前必须先排序.必须是 1,2,3或者3,2,1.否者结果不准确.如果, 1,2,4,6.这样数据不会准确nex ...

  6. cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance

    cb46a_c++_STL_算法_逆转和旋转reverse_rotateSTL算法--变序性算法reverse() 逆转reverse_copy()一边复制一般逆转rotate()旋转,某个位置开始前 ...

  7. cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据

    cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个.uniqu ...

  8. cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if

    cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...

  9. cb43a_c++_STL_算法_删除_(1)remove_remove_if

    cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...

随机推荐

  1. C语言数据类型整理

    基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型. 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量. void 类型: 类型说明符 void 表明没有可用 ...

  2. layui 数据表格按钮事件绑定和渲染

    先看效果图 使用两种渲染方法: 1.toolbar引入模板 顶部的添加和删除按钮,右侧的三个筛选,打印,导出按钮 基础参数属性:toolbar:'#demo2', //创建 删除 添加按钮模板 < ...

  3. Win10下安装Linux子系统-Ubuntu

    工作以来一直DotNet系偏C/S, 接触Web开发的时间也不长, 现在主要偏向Web全栈方向, 一直对Linux系统心生向往, 夜深了娃睡了, 打开老旧的笔记本来折腾一下. 准备工作 控制面板 &g ...

  4. 【QT】利用pyqt5实现简单界面

    Topic: 利用pyqt5编写简单界面Env:win10 + Pycharm2018 + Python 3.6.8Date: 2019/4/29 by hw_Chen2018            ...

  5. Istio 流量劫持过程

    开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅:Istio 中的 Sidecar 注入及透明流量劫持过程详解.特别是博主整理的那张" ...

  6. ES7学习笔记(十三)GEO位置搜索

    ES的基本内容介绍的已经差不多了,最后我们再来看看GEO位置搜索,现在大部分APP都有基于位置搜索的功能,比如:我们点外卖,可以按照离我们的距离进行排序,这样可以节省我们的配送费和送餐的时间:还有找工 ...

  7. 慕零的黑夜-头条-第一期(必问)[导读:]1.CSDN必问赏金流向何方 2.CSDN必问偷偷做的手脚 3.CSDN必问靠谱吗 4.关于钱于回答的平衡问题:一美元拍卖骗局 作者:qq3461896724

    本期是关于CSDN 必问 (biwen.csdn.net)的内容,欢迎评论 文末,文中插入有 小姐姐 img(附py代码,1.49G) + coding资料 哟~~~ 你看到这篇很可能是在提问.推荐加 ...

  8. 【asp.net core 系列】 1 带你了解一下asp.net core

    0. 前言 这是一个新的系列,名字是<ASP.NET Core 入门到实战>.这个系列主讲ASP.NET Core MVC,辅助一些前端的基础知识(能用来实现我们需要的即可,并非主讲).同 ...

  9. Rocket - debug - TLDebugModuleInner - Program Buffer

    https://mp.weixin.qq.com/s/kjhJJ3moRQzxHt6pJOXEgg 简单介绍TLDebugModuleInner中Program Buffer寄存器的实现. 1. pr ...

  10. JavaScript 引用数据类型

    目录 1. 问题描述 2. 原因分析 3. React 中的引用数据类型 4. 业务场景 5. 参考资料 1. 问题描述 今天在写一个代码题时候, 有一个BUG 导致自己停滞好久, 该BUG 可以描述 ...