通常,我需要根据非POD常量元素的值来选择要执行的操作,如下所示:
switch( str ) {
case "foo": ...
case "bar": ...
default: ...
}
遗憾的是switch只能与整数一起使用:error: switch quantity not an integer。
那么,实现这种事情的最简单的方法就是拥有ifs 序列:
if( str == "foo" ) ...
else if( str == "bar" ) ...
else ...
但是这种解决方案看起来很脏,应该花费O(n),其中n是案例数,而在最坏的情况下使用二进制搜索,那段代码可能花费O(log n)。
使用某些数据结构(例如Maps),可以获取表示字符串(O(log n))的整数,然后使用O(1)switch,或者可以通过if在右侧嵌套s 来实现静态二进制排序方式,但是这些骇客仍然需要大量的编码,这使一切变得更加复杂且难以维护。
最好的方法是什么?(如switch声明所述,快速,干净,简单)
慕工程0101907