#include
#include
using namespace std;
typedef int (*mapFunction)(int);
typedef int (*reduceFunction)(int,int);
#define ERROR -1
void map(mapFunction func, vector& v)
{
for (int i = 0; i < v.size(); ++i)
{
v[i] = func(v[i]);
}
}
int reduce(reduceFunction func, vector& v)
{
if (v.size() == 0)
{
return ERROR;
}
int retVal = 0;
for (int i = 0; i < v.size(); ++i)
{
retVal = func(retVal, v[i]);
}
return retVal;
}
int square(int i)
{
return i * i;
}
int add(int i, int j)
{
return i + j;
}
int main(void)
{
vector a(5);
for (int i = 0; i < a.size(); ++i)
{
a[i] = i;
}
mapFunction mapFunctionPointer = (mapFunction)□
reduceFunction reduceFunctionPointer = (reduceFunction)&add;
map(mapFunctionPointer, a);
int result = reduce(reduceFunctionPointer, a);
cout << "The result is " << result << endl;
return 0;
}
近期评论