仿函数定义与用法
用法:
#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