STL源码剖析——仿函数

仿函数定义与用法

用法:

#include <functional>

greater<int> ig;
cout << ig(4,6) << endl;
cout << greater<int>()(4,6) << endl;

accumulate(iv.begin(), iv.end(), 1, multiplies<int>());

可配接性

继承unary_function/binary_function

template <class T>
struct negate : public unary_function<T, T> {
    T operator() (const T& x) const {return -x;}
};

unary_function:一元函数的参数型别和返回值型别

template <class Arg, class Result>
struct unary_function {
    typedef Arg argument_type;
    typedef Result result_type;
};

binary_function:二元函数的参数型别和返回值型别:

template <class Arg1, class Arg2, class Result>
struct binary_funciton {
    typedef Arg1 first_argument_type;
    typedef Arg2 second_argument_type;
    typedef Result result_type;
};

函数类型

加法:

plus<T>

减法:

minus<T>

乘法:

multiplies<T>

除法:

divides<T>

模取:

modules<T>

否定:

negate<T>

证同元素:

加法证同元素返回0

乘法证同元素返回1

identity_element<T>

等于:

equal_to<T>

不等于:

not_equal_to<T>

大于:

greater<T>

大于等于:

greate_equal<T>

小于:

less<T>

小于等于:

less_equal<T>

逻辑与:

logical_and<T>

逻辑或:

logical_or<T>

逻辑非:

logical_not<T>

证同函数:

返回当前元素

identity<T>

选择函数:

返回pair中第1/2个元素

select1st<T>

select2nd<T>

投射函数:

传回第1/2个参数,忽略剩余的参数

project1st<T>

project2nd<T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值