【发布时间】:2011-01-28 18:34:32
【问题描述】:
在我的 C++ 应用程序中,我有一些值作为代码来表示其他值。为了翻译代码,我一直在争论是使用 switch 语句还是 stl map。开关看起来像这样:
int code;
int value;
switch(code)
{
case 1:
value = 10;
break;
case 2:
value = 15;
break;
}
地图将是stl::map<int, int>,翻译将是使用代码作为键值的简单查找。
哪个更好/更高效/更清洁/被接受?为什么?
【问题讨论】:
-
@KennyTM - 非常棒。除了没有实际值...
-
+1 回答一个有趣的问题。
-
您需要多少种不同的翻译?这将对将要进行的决策产生深远的影响。 IE。如果你只有 case 1 和 case 2,你应该用 if 语句替换它。
-
将选择逻辑放在自己的函数中,这样就可以有一行案例1:return 10;对于每个选项。不必中断也降低了出错的风险。
-
如果整数存储在一个文件中,正如评论中提到的那样,我会编写一个实用程序,以 .h/.c 文件的形式从这些文件生成查找表并将其编译到项目中.这解决了维护问题。同样,如果值的范围有合理的上限,则静态数组查找表是最快的解决方案。否则,您必须生成填充地图的代码。
标签: c++ dictionary switch-statement std stdmap