例如,假设我想枚举一个字符串列表 {“ALPHA”、“BETA”、“GAMMA”、“OMEGA”}。我能想到的两种方法:
--- Method 1 ---
string getType(int a)
{
switch(a)
{
case 0: return "ALPHA";
case 1: return "BETA";
case 2: return "GAMMA";
case 3: return "OMEGA";
}
}
或者我可以创建一个字符串数组并使用它来返回相应的字符串元素:
--- Method 2 ---
string data[] = { "ALPHA", "BETA", "GAMMA", "OMEGA" };
string getType(int a)
{
return data[a];
}
(假设一个非常大的数据集)编译器如何处理这两种方法?最终的汇编代码是什么样的?一种方法在检索元素方面是否比另一种方法更快?一个人会占用更多的内存空间吗?或者它们是否被翻译成相同的机器代码?
我最好的猜测是方法 2 工作得更快,但也占用了更多的内存空间,因为它需要数组的空间;而方法 1 每次调用 getType(..) 时都需要更多时间,但需要更少的内存,因为变量只存储在汇编命令中。但我仍然不知道 C++ 或其他语言编译器将如何处理代码,可能会产生完全不同的东西。