C++的可调用对象:
所谓的可调用对象,它们都具有一个共同特点,就是可以像使用函数那样去调用,如f(args)这种形式,args是参数。
1. 函数名
2. 函数指针
3. 重载了括号"()"的对象
4. lambda表达式
接下来,以sort为例分别介绍这四种方法
1.函数名
bool cmp( const int& a,const int &b){
return a<b;
}
int main()
{
int a[] = {1,2,7,3,4,-2,-3,5};
sort(a,a+8,cmp);
for(int i:a)
cout<<i<<" ";
}
2.函数指针
bool cmp( const int& a,const int &b){
return a<b;
}
int main()
{
int a[] = {1,2,7,3,4,-2,-3,5};
bool (*cmp1) (const int& ,const int &) = cmp;
sort(a,a+8,cmp1);
for(int i:a)
cout<<i<<" ";
}
注意:cmp1
是一个函数指针
3. 重载了括号"()"的对象
struct pred{
bool operator ()(const int& x,const int& y) const
{
return x<y;
}
};
int main()
{
int a[] = {1,2,7,3,4,-2,-3,5};
sort(a,a+8,pred());//pred()是一个临时对象
for(int i:a)
cout<<i<<" ";
}
4. lambda表达式
int main()
{
int a[] = {1,2,7,3,4,-2,-3,5};
sort(a , a+8 ,
[](const int& x,const int& y){return x<y;}
);
for(int i:a)
cout<<i<<" ";
}