仿函数

作者: 圣明 | 来源:发表于2022-06-10 18:05 被阅读0次

什么是仿函数

Function Object ,函数对象,是泛型编程强大威力和纯粹抽象概念的强力例证,任何一个东西,只要它的行为像函数,它就是个函数。因此,如果你定义了一个对象,它的行为像函数,它就可以当函数来使用。

例如

例1

class X {
public:
    void operator()(int i) const;
};

void X::operator()(int i) const {
    cout << i << endl;
}

...
X x;
x(1);

例2:

这是一个for_each的实现:

template<class Iterator, class Operation>
Operation foreach(Iterator act, Iterator end, Operation op) {
    while (act != end) {
        op(*act);
        ++act;
    }
    return op;
}

int main(){
    list<int> coll1;
    for (int i = 0; i <= 9; i++) {
        coll1.push_back(i);
    }
    foreach(coll1.begin(), coll1.end(), [](int it) {
        cout << it << " ";
    });
}

其中: Operation就是一个仿函数。

缺点

  • 复杂
  • 怪异
  • 难懂

优点

  • 仿函数是智能型函数
  • 仿函数有自己的型别
  • 仿函数比普通函数速度更快(template 特性所致)

相关文章

  • STL学习笔记之算法(二)

    仿函数、仿函数类、函数等 条款38:把仿函数类设计为用于值传递 STL中的习惯是当传给函数和从函数返回时函数对象也...

  • C++仿函数

    仿函数 仿函数又称为函数对象,是一种能够行使函数功能的类,该类重载了operator()运算符,调用仿函数的时候实...

  • 仿函数

    什么是仿函数 Function Object ,函数对象,是泛型编程强大威力和纯粹抽象概念的强力例证,任何一个东西...

  • 函数对象(仿函数)

    1.1 知识点 函数对象概述 预定义函数对象 辅助函数对象 适配器 函数对象使用方法 1.2 实验环境 g++ u...

  • C++入门11 -- 仿函数,函数模版,类模版

    仿函数(函数对象) 仿函数:将一个对象当作一个函数来使用; 模版 泛型:将类型参数化以达到代码复用的技术,C++中...

  • GeekBand-STL 第2周

    stl的整体结构: 内存分配器,迭代器,容器,仿函数,算法,适配器 仿函数与函数的区别:本质是一个对象,opera...

  • C++第17天: 第237课-第242课 函数对象,仿函数,一元

    引入头文件 functional 为什么要用仿函数,用法方便 函数对象的仿函数有两种,一种是有返回值或者void,...

  • func bind

    std::function<>可以用于保存函数,包括仿函数,全局函数,成员函数,静态成员函数,lamdba表达式,...

  • C++ 仿函数

    仿函数 定义:仿函数(functor),就是使一个类的使用看上去像一个函数。其实现就是类中实现一个operator...

  • 【Effective STL(6)】仿函数、仿函数类、函数等

    38 把仿函数类设计为用于值传递 STL函数对象在函数指针之后成型,因此STL习惯传给函数和从函数返回时,函数对象...

网友评论

      本文标题:仿函数

      本文链接:https://www.haomeiwen.com/subject/xfpbmrtx.html