我有一段类似如下的 c++11 代码:
switch(var) {
case 1: dosomething(std::get<1>(tuple));
case 2: dosomething(std::get<2>(tuple));
...
}
有什么办法可以去掉这个大开关吗?请注意, get<var>
不起作用,因为 var 不是恒定的,但我知道 var 的范围很小,即(0-20)。
请注意,这里的重点是避免使用导致数组查找的数组…
编辑:
关于性能问题,有一个关于 if 和 switch 语句的函数数组性能的 讨论
为了我自己的目的,我不争论哪个更好。
原文由 w00d 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个不使用索引序列的版本:
演示