编程技术/样式,以避免C中的大型开关/ if块?

时间:2012-02-19 13:34:28

标签: c coding-style

在评估条件语句/控制流时,只是一个快速的问题,看看是否有不同的编码类似方法。

例如:

  • 如果声明
  • 切换语句

有没有更复杂的方法来做这些,因为我基本上可以选择If (value == X) { // do X }Switch(value) { case X: ...

当使用超过100个值执行此操作时,是否可以采用任何数据驱动方法或任何可以整理代码的不同评估方法?

1 个答案:

答案 0 :(得分:4)

如果你的值是整数并且没有稀疏,有时可以方便地使用查找表(数据和代码 - 在最后一种情况下你使用函数指针,通常称为跳转表,这是顺便说一句,编译器经常用switch块做什么);如果替代方案是逐个检查可能的值,则性能从O(N)跳到O(1)。

此外,对于非整数数据,可以使用哈希表。它们的便利程度取决于具体情况。