c++中的函数对象《未完成》
头文件:
#pragma once
#include<iostream>
#include<vector>
using namespace std;
class Student
{
public:
Student(double hei):height(hei){}
double getheight() const { return height; }
~Student(){}
private:
double height;
}; vector<Student> s;
for(int i=;i<;i++)
s.???
// 定义一个函数对象类
// 用于统计容器中所有Student对象的身高
class AverageHeight
{
public:
// 构造函数,对类的成员变量作合理的初始化
AverageHeight()
: m_nCount(), m_nTotalHeight() {};
// 定义函数调用操作符“()”,
// 在其中完成统计的功能
void operator () (const Student& st)
{
// 将当前对象的身高累加到总身高中
// 这里的m_nTotalHeight记录了上次累加的结果,
// 这就是函数那失去的记忆
m_nTotalHeight += st.getheight();
// 增加已经统计过的Student对象的数目
++m_nCount;
}
// 接口函数,获得所有统计过的Student对象的平均身高
float GetAverageHeight()
{
if ( != m_nCount)
return (float)GetTotal() / GetCount();
}
// 获得函数对象类的各个成员变量
int GetCount() const
{
return m_nCount;
}
int GetTotal() const
{
return m_nTotalHeight;
}
// 函数对象类的成员变量,
// 用来保存函数执行过程中的状态数据
private:
int m_nCount; // 记录已经统计过的对象的数目
int m_nTotalHeight; // 记录已经统计过的身高总和
};
源文件:
#include"wuyong.h"
using namespace std;
int main()
{
// 创建函数对象
AverageHeight ah;
// 将函数对象应用到for_each()算法中以完成统计
ah = for_each(vecStu.begin(), vecStu.end(), ah);
// 从函数对象中获取它的记忆作为结果输出
cout << ah.GetCount() << "个学生的平均身高是:"
<< ah.GetAverageHeight() << endl;
system("pause");
return ;
}
c++中的函数对象《未完成》的更多相关文章
- Java中的函数对象
初次听说java中的函数对象可能,比较的陌生.可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把 ...
- STL中的函数对象实现负数的定义
// // main.cpp // STL中的函数对象 // // Created by mac on 2019/5/2. // Copyright © 2019年 mac. All rights r ...
- 3.2 STL中的函数对象类模板
*: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...
- C++模板中的函数对象
在C++模板类map中一个参数为Compare类型,该类型为一个比较函数,其完整定义如下: template< class Key, class T, class Compare = std:: ...
- Python中的函数对象与闭包
函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 #foo.py def callf(func): ...
- python中的函数对象与闭包函数
函数对象 在python中,一切皆对象,函数也是对象 在python语言中,声明或定义一个函数时,使用语句: def func_name(arg1,arg2,...): func_suite 当执行流 ...
- c++中的函数对象
头文件wuyong.h: #pragma once #include<iostream> using namespace std; template<typename T> s ...
- Python中通过函数对象创建全局变量
先看下面这段代码,显然无法work. 因为代码试图在TestVariableScope()中引用一个没有被定义的变量a.所以必须报错,如下图-1. 不过如果你将第2行代码注释掉.代码就能跑通了,如图- ...
- 【转载】javascript中的函数对象
原文地址:http://www.cnblogs.com/phpzxh/archive/2009/09/16/1568137.html[侵删] 在javascript中函数的申明方式有四种 下面代码中一 ...
随机推荐
- Java基础 - 面向对象 - 类方法传参
调用方法时可以给该方法传递一个或多个值,传给方法的值叫实参,在方法内部,接收实参的变量叫做形参,形参的声明语法与变量的声明语法一样.形参只在方法内部有效. Java中方法的参数主要有3种,分别为值参数 ...
- delphi中String 和 动态静态数组
默认string类型为ansiString:有编译开关控制 shortString: strShort : shortString; strShort 大小256字节,可根据sizeof()计算出,s ...
- Linux network namespace源码分析
一.network namespace的创建 在对iproute2的源码进行分析后,我们可以知道,当我们调用命令`ip netns add ns1`时,本质上就是调用`unshare(CLONE_NE ...
- Android图片加载框架Picasso最全使用教程3
前面我们对Picasso的用法有了一定得了解,下面就分析一下一些特殊情况下,Picasso的用法. 调用.noFade() Picasso的默认图片加载方式有一个淡入的效果,如果调用了noFade() ...
- Djngo Rest Framework
目录: 认证和授权 用户访问次数/频率 版本 解析器 序列化 分页 路由系统 视图 渲染器 一. 什么是Restful REST与技术无关,代表的是一种软件架构风格,REST是Representati ...
- Python-Cpython解释器支持的进程与线程
一.Python并发编程之多进程 1. multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在pyt ...
- jupyter常用快捷键
Jupyter Notebook 有两种键盘输入模式.即命令模式和编辑模式,这与 vim有些类似. 在编辑模式下,可以往单元中键入代码或文本,此时单元格被绿色的框线包围,且命令模式下的快捷键不生效. ...
- day2 笔记
while 条件: # 循环体 # 如果条件为真,那么循环体则执行 # 如果条件为假,那么循环体不执行 循环中止语句 如果在循环的过程中,因为某 ...
- IE10、火狐浏、谷歌浏览器 KindEditor无法获取textarea值
http://e-mailwu.blog.163.com/blog/static/651040362013311160913/ 在IE10.火狐浏览器.谷歌浏览器下后台KindEditor在线编辑器无 ...
- ubuntu 配置tomcat 实测成功
https://blog.csdn.net/qq_24091555/article/details/75077781