(此答案假定 C++ 的 C++11 标准。)
正如您在评论中指出的那样,我们可以假设存储在数组中的所有操作都将采用两个整数参数并返回一个整数。因此可以将它们表示为这种数据类型的函子:
std::function<int(int,int)>
该数据类型的固定大小的 5 元素数组最好实现为
std::array<std::function<int(int,int)>,5>
下面是一个使用这些数据类型的完整示例。它使用标准库(等)提供的函数对象实现加、减、乘、除四种基本操作。还有第五个算术运算,我使用整数幂的特殊实现。它被实现为 lambda 函数(C++11 提供的一种新的匿名函数类型。它也可以转换为数组并存储在数组中。std::plus<int>
std::minus<int>
std::function<int(int,int)>
#include <iostream>
#include <functional>
#include <array>
int main()
{
/* Customized arithmetic operation. Calculates the arg2-th
power of arg-1. */
auto power = [](int arg1, int arg2) {
int result = 1;
for (int i = 0 ; i < arg2 ; ++i)
result *= arg1;
return result;
};
/* Fixed-size array of length 4. Each entry represents one
arithmetic operation. */
std::array<std::function<int(int,int)>,5> ops {{
std::plus<int>(),
std::minus<int>(),
std::multiplies<int>(),
std::divides<int>(),
power
}};
/* 10 + 20: */
std::cout << ops[0](10,20) << std::endl;
/* 3 - 1: */
std::cout << ops[1](3,1) << std::endl;
/* 3rd power of 9: */
std::cout << ops[4](9,3) << std::endl;
return 0;
}