#include<iostream>
#include<array>
#include<algorithm>
using namespace std;
/*
仿函数可以用结构体或者类实现
*/
struct Sum
{
int operator()(int a, int b)
{
return a + b;
}
};
bool cmp(int a, int b)
{
return a > b;
}
//也可以用类
class Sum2
{
public:
int operator()(const int a, const int b)const
{
return a + b;
}
};
//仿函数在排序中的应用
int main()
{
std::array<int, 5> a0 = { 1,3,4,2,0 };
sort(a0.begin(), a0.end(), [](int a, int b) {return a > b; });
for_each(a0.begin(), a0.end(), [](int i) {cout << i << endl; });
Sum object;
Sum2 ob;
cout << Sum()(1, 2) << endl;//采用匿名方式调用重载函数
cout << object.operator()(1, 2) << endl;//显式调用重载函数
cout << object(1, 2) << endl;//对象与运算符重载方式调用
cout << Sum2()(1, 2) << endl;//采用匿名方式调用重载函数
cout << ob.operator()(1, 2) << endl;//显式调用重载函数
cout << ob(1, 2) << endl;//对象与运算符重载方式调用
system("pause");
return 0;
}
仿函数和lambda表达式
最新推荐文章于 2024-10-02 23:40:03 发布