/* 函数对象
* 定义:重载函数调用操作符的类,其对象常称为函数对象.
* 函数对象使用重载的`()`时,行为类似函数调用,也叫仿函数;
*
* 本质:函数对象(仿函数)是一个类,不是一个函数.
*
* 函数对象使用特点:
* - 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值;
* - 函数对象超出普通函数的概念,函数对象可以有自己的状态.(仿函数也可以看做一个实例化的特殊类,利用其类变量来记录一些状态);
* - 函数对象可以作为参数传递.
*
* 谓词:返回bool类型的仿函数称为谓词.
* - 如果operator()接受一个参数,那么叫做一元谓词;
* - 如果operator()接受两个参数,那么叫做二元谓词;
*
* 内建函数对象:
* (1)算术仿函数,实现四则运算。其中negate是一元运算,其他都是二元运算。仿函数原型:
* - `template<class T> T plus<T>` 加法仿函数,`plus<int> p; p(10,20); // p(10, 20)==30`
* - `template<class T> T minus<T>` 减法仿函数;
* - `template<class T> T multiplies<T>` 乘法仿函数;
* - `template<class T> T divides<T>` 除法仿函数;
* - `template<class T> T modulus<T>` 取模仿函数;
* - `template<class T> T negate<T>` 取反仿函数,`negate<int> neg; neg(10); // neg(10)==-10`
* (2)关系仿函数,实现关系对比。仿函数原型:
* - `template<class T> bool equal_to<T>` 等于;
* - `template<class T> bool not_equal_to<T>` 不等于;
* - `template<class T> bool greater<T>` 大于,`sort(v.begin(), v.end(), greater<int>())`;
* - `template<class T> bool greater_equal<T>` 大于等于;
* - `template<class T> bool less<T>` 小于;
* - `template<class T> bool less_equal<T>` 小于等于;
* (3)逻辑仿函数,实现逻辑运算。仿函数原型:
* - `template<class T> bool logical_and<T>` 逻辑与;
* - `template<class T> bool logical_or<T>` 逻辑或;
* - `template<class T> bool logical_not<T>` 逻辑非;
*
* 用法:
* - 这些仿函数所产生的对象,用法和一般函数完全相同;
* - 使用内建函数对象,需要引入头文件`include <functional>`;
*/
黑马C++视频笔记《STL之函数对象(仿函数)》
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...