相关疑难解决方法(0)

C/C++:切换非整数

通常我需要根据非POD常量元素的值选择要做的事情,如下所示:

switch( str ) {
  case "foo": ...
  case "bar": ...
  default:    ...
}
Run Code Online (Sandbox Code Playgroud)

可悲的是switch只能用整数:error: switch quantity not an integer.

实现这样的事情最简单的方法是获得一系列ifs:

if( str == "foo" )      ...
else if( str == "bar" ) ...
else                    ...
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案看起来很脏并且应该花费O(n),其中n是案例数,而在最坏的情况下,使用二进制搜索,这段代码可能花费O(log n).

使用一些数据结构(如Maps)可以获得表示字符串的整数(O(log n)),然后使用O(1)switch,或者可以通过if在右边嵌套s 来实现静态二进制排序但是,这些黑客攻击还需要大量编码,使一切变得更加复杂和难以维护.

最好的方法是什么?(快速,干净,简单,正如switch声明所述)

c c++ switch-statement

53
推荐指数
5
解决办法
3万
查看次数

标签 统计

c ×1

c++ ×1

switch-statement ×1