我们有 8 个功能:
void Function1() {}
...
void Function8() {}
我们有一个 char 变量,其中只有 8 位。
例如,如果它包含 10001011,那么我们必须执行 Function1、Function5、Function7、Function8。
那么,在资源和占用内存方面,什么会更有效呢?
1) 8 个如果:
void CallFunctions(char val) {
if(val & 1) {
Function1();
}
...
if(val & 0x80) {
Function8();
}
}
2)用函数指针初始化一个数组,大小为256个元素:
std::function<void()> *ptrs;
并在 val 处调用每个函数:
void CallFunctions(char val) {
ptrs[val]();
}
例如,在 ptrs[1] 会有一个只调用 Function1(); 的函数。
在 ptrs[3] 处,已经有一个函数依次调用 Function1() 和 Function2()。
3) 你的选择。
如果是后者,如何以最少的内存分配来做到这一点?
3)创建一个包含 8 个指针的数组并对其进行迭代:
在线编译器