枚举与它们对应的数组之间紧密绑定是否可行?
请注意,以下仅为伪代码,仅用于理解。
方法1:一种方法是我们创建并声明数组。
enum Names
{
ABC,
DEF,
GHI
};
char* names[] = {"abc", "def", "ghl"}; // Declare and define.
要获取值,我们将执行:
char *nm = names[ABC];
这种方法的缺点是我们需要保持枚举和名称数组同步,即如果我们更改枚举并将某些值移动到其他位置,则表格中也需要进行相应的更改。
例如:将DEF移到枚举顶部
枚举名称 { DEF, ABC, GHI };
// 同时更改数组。
char* names[] = {"def", "abc", "ghi"}
方法2。
打破枚举和数组之间的绑定的一种方法是使用下面的创建函数。
int CreateNamesArray() {
Names[GHI] = "ghl";
Names[DEF] = "def";
Names[GHI] = "ghi";
};
现在即使枚举值发生变化,数组也不会受到影响。 这种方法的一个缺点是我们需要在访问表格之前调用该函数。
请建议哪种方法更好。 表格将有30-100个条目。