我们知道模板加强了代码的复用性,那么模板参数为函数时的模板函数怎么写呢,下面介绍了普通函数为模板参数以及lambda函数为模板参数的模板的写法。
#include<iostream>
#include<vector>
using namespace std;
//普通函数
int sum(const vector<int>& vec)
{
int ret = 0;
for (int i = 0; i < vec.size(); i++)
{
ret += vec[i];
}
return ret;
}
//LookupFn为一个函数类型的模板参数
template<typename LookupFn>
int addFn(const vector<int>& nums, LookupFn LUF)
{
return LUF(nums);
}
int main()
{
vector<int> nums = { 1,2,3,4,5,6,7 };
//lambda函数作为模板参数
int sum1 = addFn(nums, [&](const vector<int>& vec) {
int ret = 0;
for (int i = 0; i < vec.size(); i++)
{
ret += vec[i];
}
return ret;
});
int sum2 = addFn(nums, sum);
cout << sum1 << " " << sum2 << endl;
system("pause");
return 0;
}
输出:28 28