在数组中搜索还是切换?对于密码替换

Tae*_*Tae 3 c++ arrays encryption algorithm switch-statement

我用C++中的替换编码经典密码,使用ASCII中的所有可打印字符,我想知道哪个更快?在数组中搜索(编辑:一个非关联的,只是letters[] = {'a', 'b', ...);(线性或二进制)或switch语句?编译器可以优化开关,不是吗?.可能不同的是内存使用情况?我的选择是开关,虽然代码更大,但也许我错过了一些东西.

(也许这个问题似乎是主观的,但我认为选择一种或另一种方式是客观原因.对不起我的英语).

and*_*ski 6

你为什么需要搜索?只需要一个由ASCII字符索引的128项数组.这基本上就是编译器对你的开关所做的.(您可以减去32并使用96条目数组,从而节省非printables使用的空间.)

  • 您是否看过为 switch 语句生成的程序集?编译器不使用数组来实现 switch。他们使用偏移跳跃。 (2认同)
  • @Vlad:他们有效地使用跳转表,这是跳转目标的数组. (2认同)