`

仿函数

    博客分类:
  • c++
阅读更多
仿函数的优点在于:能在函数中关联某些状态。对于回调机制,这种优点可以带来功能上的提升,因为对于一个函数而言,我们能根据不同的参数来生成不同的函数实例
#include<iostream>
using namespace std;

class A{
private:
    int a;
public:
    A(int i):a(i){};
    int operator()()const{
        return a;
    }
};

void fun(const A& a){
    cout << a() << endl;
}

int main(){
    A a1(3);
    fun(a1);
}

3

函数指针的封装:
#include<vector>
#include<iostream>
#include<cstdlib>
using namespace std;

//用于把函数指针封装成函数对象的封装类
template<int (*FUN)()>
class A{
public:
    int operator()(){
        return FUN();
    }
};

int myRandom(){
    return rand()%100;
}

//它使用由模板参数传递进来的函数对象类型
template<typename T>
void init(vector<int>& v){
    T t;
    srand(time(0));
    for(size_t i=0;i<v.size();i++){
        v[i] = t();
    }
}

int main(){
    vector<int> v(10);
    init<A<myRandom> >(v);
    cout << "ten random number:" << endl;
    for(vector<int>::const_iterator iter = v.begin();
                                    iter != v.end();
                                    ++iter){
        cout << *iter << " ";
    }
}

ten random number:
91 62 13 47 61 94 75 67 76 82
分享到:
评论

相关推荐

    仿函数 学习C++的经典例子

    在C++编程语言中,仿函数(Functors)是一个重要的概念,它扩展了函数对象的能力,使其具有类的特性。仿函数本质上是类,但它们的行为类似于普通函数,因此得名“仿函数”。这个概念是C++标准库中的一个重要组成部分...

    C++ 仿函数技术 源码

    在C++编程语言中,仿函数(Functors)是一种重要的设计模式,它使得函数对象能够像普通函数一样被调用,同时又具有类对象的特性,如可存储状态、重载运算符等。本资源提供了关于C++仿函数技术的源码,帮助你深入理解...

    multisim仿真函数发生器

    《Multisim仿真函数发生器详解》 Multisim是一款强大的电路仿真软件,广泛应用于电子工程教学和设计中。在众多的功能中,函数发生器是不可或缺的一部分,它能模拟各种类型的信号源,为电路分析和测试提供便利。本文...

    高效实用的C 委托库,支持普通函数,仿函数.rar

     本委托库支持普通函数,仿函数,类成员函数的委托库,以相同方式声明0-9个参数的任意委托。  特点:  一、支持编译器和性能,这包括VC6.0和VC7.1:  只使用了STL的vector和typeinfo库.性能与boost的function...

    计算机仿真函数库与代码

    计算机仿真函数库是软件开发中一个非常重要的工具,它允许开发者在不实际运行完整系统或设备的情况下,模拟其行为和性能。"计算机仿真函数库与代码"这个主题涵盖了这一领域的一些核心概念和技术。 首先,我们要理解...

    qevent_仿函数_C++Q验证_Vc_

    标题中的"qevent_仿函数_C++Q验证_Vc_"暗示了这个压缩包可能包含一个名为"qevent"的库,该库是针对C++设计的,特别关注仿函数(Function Objects)的实现,同时也涉及到C++的Qt库的事件处理部分,并且是为Visual C++...

    UG运动仿真函数.pdf

    该函数的特点是,在时间段t0到t1内,函数以中间波浪线样子的二次函数变化,在时间t0之前的时间段内,函数是h0的恒定数值变化,在时间t1后,函数是h1的恒定数值变化。 在实际应用中,step函数可以用来控制连杆在不同...

    smpl仿真函数说明及例子

    本篇将主要围绕"smpl仿真函数说明及例子"这个主题,详细解析SMPL模型的API及其在实际中的应用。 首先,SMPL模型是一种参数化的模型,通过一组参数来表示人体的姿态和形状。这些参数包括关节角度(姿态)和体型特征...

    范型和仿函数在桌面系统中的应用

    标题和描述均提到了“范型和仿函数在桌面系统中的应用”,这表明文章的核心将围绕这两个概念在桌面编程环境下的使用展开。虽然标签部分没有提供额外信息,但结合部分内容,我们可以深入探讨范型(Generics)和仿函数...

    UG运动仿真函数.doc

    UG运动仿真函数是UG软件中用于模拟零件或组件在特定时间段内运动的一种工具。通过使用特定的函数表达式,用户可以定义对象随时间变化的行为,从而进行动态分析和验证机械系统的运动学性能。本文主要围绕UG运动仿真的...

    P237~242C++内建函数仿函数学习笔记.docx

    在C++编程语言中,函数对象(也称为仿函数)是一种重要的概念,它扩展了普通函数的功能。在本文档中,我们主要探讨了C++中的函数对象及其在STL(Standard Template Library)中的应用。 首先,函数对象是一个重载了...

    proteus仿真函数信号发生器

    标题中的“proteus仿真函数信号发生器”指的是在电子设计领域中,使用Proteus软件进行模拟的一种工具。Proteus是一款强大的电子设计自动化(EDA)软件,它集电路设计、PCB布线、仿真、虚拟原型测试等功能于一体,...

    浅析C++ 仿函数

    浅析C++ 仿函数 C++ 仿函数是一种特殊的函数对象,具有类似函数的功能,但又是对象。它可以作为函数的参数传递,解决了函数指针参数类型不兼容的问题。 1. 仿函数的必要性 在介绍仿函数之前,需要了解为什么需要...

    c++容器和函数对象(仿函数)(csdn)————程序.pdf

    C++ 容器和函数对象(仿函数) C++ 容器是 C++ 标准库中的一个重要组成部分,它提供了一些常用的数据结构,例如向量、链表、集合、映射等,帮助程序员快速开发高效的程序。本文将对 C++ 容器中的 vector、set 和 ...

    UG运动仿真函数的应用学习教案.pptx

    UG运动仿真函数的应用学习教案.pptx

    基于Qt的函数对象(泛化仿函数)设计,可在线程中运行并通过信号返回QVariant

    基于Qt的函数对象(泛化仿函数)设计,可在线程中运行并通过信号返回QVariant

    matlab阶乘仿真函数文件

    阶乘函数用于matlab仿真

    动力学仿真函数

    adams动力学软件中常用函数。一些简单的函数

    浅析stl序列容器(map和set)的仿函数排序

    STL(Standard Template Library,标准模板库)是C++中一个强大的工具,它提供了一系列的容器、迭代器、算法和仿函数(function object),极大地提高了编程效率和代码可读性。在本文中,我们将深入探讨如何使用仿...

Global site tag (gtag.js) - Google Analytics