functor(仿函数), 或者称之为function object(函数对象), 是STL的四大组件之一。
什么是仿函数呢?
一个函数对象是封装在类中, 从而看起来更像是一个对象。 这个类只有一个成员函数, 即重载了() (括号)的运算符。 它没有任何数据。 该类被模板化了, 从而可以应付多种数据类型。
看一个例子:
上例中, 我们定义了一个类X, 然后我们在类中定义了一个运算...
分类:
其他好文 时间:
2014-07-27 11:56:33
阅读次数:
227
#include?<iostream>
#include?<algorithm>
using?namespace?std;
//回调函数
void?call_back(char?elem)
{
?cout?<<?elem?<<?endl;
}
//仿函数
struct?Functor
{
?void?operator()?(char?elem)...
分类:
其他好文 时间:
2014-07-22 08:13:37
阅读次数:
316
* Functor中文翻译为仿函数。* lambda与匿名函数密不可分。lambda本身隐式地定义了对应的函数对象类型(Functor Class)以及该类的对象(Functor object)。Functor特性* 可包含状态。* 可用作模板参数。* 与函数指针相比,Functor语法复杂(需要定...
分类:
编程语言 时间:
2014-07-16 21:57:10
阅读次数:
312
C++中如何使用表驱动配合工厂模式创建对象?什么是指向成员函数的指针?每个类真的会给你生成默认构造函数吗?本次在实验指向成员函数的过程中对这些问题进行了总结,欢迎大家给出意见~~...
分类:
其他好文 时间:
2014-07-13 18:28:09
阅读次数:
272
首先来看看百度百科对"谓词函数"的定义说明:
1定义编辑
一个判断式,一个返回bool值的函数或者仿函数。几元就是函数有几个参数,至于定义和使用,函数定义和一般的函数定义一样,仿函数就是写个类,然后重载operator()。使用就是在那些以这种需要返回bool值的函数作参数的函数里用了。
一元谓词函数举例如下
1,判断给出的string对象的长度是否小于6
boo...
分类:
编程语言 时间:
2014-07-09 13:01:39
阅读次数:
213
C++仿函数(functor)详解 所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。 因此,这里需要明确两点: 1 仿函数不是函数,它是个类; 2 仿函数重载了()运算符,使得它的对你可以像函数那样子调用(代码的形式好像是在调用函数)。 看下面的实例:#include...
分类:
编程语言 时间:
2014-07-07 22:35:32
阅读次数:
359
??
transform()的第一版本以仿函数op作用于[first,last)中的每一个元素身上,并以其结果产生出一个新序列。第二版本以仿函数binary_op作用于一双元素身上(其中一个元素来自[first1,last1),另一个元素来自“从first2开始的序列”),并以其结果产生出一个新序列。如果第二序列的元素少于第一序列,执行结果未可预期。
//版本一
template
Out...
分类:
其他好文 时间:
2014-06-26 13:39:18
阅读次数:
198
??
所谓临时对象就是一种无名对象。它的出现如果不在程序员的预期之下(例如任何pass by value操作都会引发copy操作,于是形成一个临时对象),往往照成效率上的负担。但有时候可以制造一些临时对象,却又使程序干净清爽的技巧。刻意制造临时对象的方法是,在型别名称之后直接加一对小括号,并可指定初值,例如int(8),其意义相当于调用相应的constructor,且不指定对象名称。STL最...
分类:
编程语言 时间:
2014-06-22 21:01:55
阅读次数:
209
??
许多STL算法都需要用户指定某个条件或某个策略,而条件或策略的背后由一整组操作构成,便需要某种特殊的东西来代表这“一整组操作”。
代表“一整组操作”的,当然是函数。过去C语言时代,欲将函数当做参数传递,唯有通过函数指针才能达成。但是函数指针有缺点,最重要的是它无法持有自己的状态(所谓局部状态),也无法达到组件技术中的可适配性(adaptablity)-----也就是无法再将某些修...
分类:
其他好文 时间:
2014-06-22 16:22:21
阅读次数:
349
??
任何一个STL算法,都需要获得由一对迭代器(泛型指针)所标识的区间,用以表示操作范围。这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示。也就是说,整个实际范围从first开始,知道last-1。迭代器last所指的是“最后一个元素的下一位置”。这种偏移一格的标示法,带来了许多方便,例如下面两个STL算法的循环设计,就显得干净利落:
template
...
分类:
其他好文 时间:
2014-06-21 21:20:27
阅读次数:
293