头文件:

#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++中的函数对象《未完成》的更多相关文章

  1. Java中的函数对象

    初次听说java中的函数对象可能,比较的陌生.可以类比着来理解一下,人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把 ...

  2. STL中的函数对象实现负数的定义

    // // main.cpp // STL中的函数对象 // // Created by mac on 2019/5/2. // Copyright © 2019年 mac. All rights r ...

  3. 3.2 STL中的函数对象类模板

    *: STL中有一些函数对象类模板,如下所示: 1)例如要求两个double类型的x 和y 的积,可以: multiplies<double>()(x,y); 该表达式的值就是x*y的值. ...

  4. C++模板中的函数对象

    在C++模板类map中一个参数为Compare类型,该类型为一个比较函数,其完整定义如下: template< class Key, class T, class Compare = std:: ...

  5. Python中的函数对象与闭包

    函数在Python中是第一类对象,可以当做参数传递给其他函数,放在数据结构中,以及作为函数的返回结果. 下面的例子为接受另外一个函数作为输入并调用它 #foo.py def callf(func): ...

  6. python中的函数对象与闭包函数

    函数对象 在python中,一切皆对象,函数也是对象 在python语言中,声明或定义一个函数时,使用语句: def func_name(arg1,arg2,...): func_suite 当执行流 ...

  7. c++中的函数对象

    头文件wuyong.h: #pragma once #include<iostream> using namespace std; template<typename T> s ...

  8. Python中通过函数对象创建全局变量

    先看下面这段代码,显然无法work. 因为代码试图在TestVariableScope()中引用一个没有被定义的变量a.所以必须报错,如下图-1. 不过如果你将第2行代码注释掉.代码就能跑通了,如图- ...

  9. 【转载】javascript中的函数对象

    原文地址:http://www.cnblogs.com/phpzxh/archive/2009/09/16/1568137.html[侵删] 在javascript中函数的申明方式有四种 下面代码中一 ...

随机推荐

  1. squid3认证配置

    在使用squid3的时候为了安全我们通常添加基于账号密码的认证方便管理也防止被检测 1. 密码文件准备 密码配置我们使用htpasswd配置,htpasswd可以自己安装如果找不到就直接安装apach ...

  2. mysql replace 使用注意,update的时候 删除从表数据

    使用REPLACE插入一条记录时,如果不重复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值. 使用REPLACE的最大好处就是可以将DEL ...

  3. 亚马逊 MWS 开发者指南 漏桶算法

    流量控制与令牌桶算法|James Pan's Blog  https://blog.jamespan.me/2015/10/19/traffic-shaping-with-token-bucket 服 ...

  4. Piggy-Bank---hdu1114(完全背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意是有一个存钱罐,当它是空的时候重量为E,满的时候重量为F:已知存钱罐里面有 n 种钱,每种钱 ...

  5. 微信js分享朋友圈(一)

    1.绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 2.引入js文件 <script type=&q ...

  6. Python迭代对象、迭代器、生成器

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...

  7. (数据库之pymysql)

    权限管理http://www.cnblogs.com/linhaifeng/articles/7267587.html#_label6一.pymysql模块(安装与查询) 1.安装pymysql(py ...

  8. Java io流详解三

    public class IOpractise { public void iotest() { int b= 0; FileInputStream fis = null; try { fis = n ...

  9. python sqlite

    1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ import sqlite3 2. 创建/打开数据库 ...

  10. Java集合(8):Hashtable

    一.Hashtable介绍 和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射,它在很大程度上和HashMap的实现差不多. Hashtable ...