C++ STL篇 仿函数

引入

  • 六大部件之一。只为算法服务,比如排序,累加等算法,如果需要自定义准则,就需要自己写仿函数附加到STL中去。
  • 必须重载(),模仿函数。
  • 三大分类:算术类 Arithmetic;逻辑运算类 Logical;相对关系类 Relational
1
2
3
4
5
6
7
8
9
10
11
12
//算术类 Arithmetic
template<class T>
struct plus:public binary_function<T,T,T>{
T operator()(const T&x,const T&y) const
{return x+y;}
};

template<class T>
struct minus:public binary_function<T,T,T>{
T operator()(const T&x,const T&y) const
{return x-y;}
};
1
2
3
4
5
6
//逻辑运算类 Logical
template<class T>
struct logical_and:public binary_function<T,T,bool>{
bool operator()(const T&x,const T&y) const
{return x&&y;}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//相对关系类 Relational
template<class T>
struct equal_to:public binary_function<T,T,bool>{
bool operator()(const T&x,const T&y) const
{return x==y;}
};
template<class T>
struct less:public binary_function<T,T,bool>{
bool operator()(const T&x,const T&y) const
{return x<y;}
};

template<typename Iterator,typename Cmp>
Algorithm(Iterator itr1,Iterator itr2,Cmp comp)
{...}

to be continued…

Thanks for Support.