作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Is it ok to have tight binding between Enums to their correspoind Arrays
请注意,这些只是用于理解的伪代码。
方法 1. 一种方法是我们创建声明和定义数组。
enum Names
{
ABC,
DEF,
GHI
};
char* names[] = {"abc", "def", "ghl"}; // Declare and define.
为了获得值(value)我们会做
char *nm = names[ABC];
这种方法的缺点是我们需要保持枚举和名称数组同步,即如果我们更改枚举,我们移动某些值,这些也需要在表中完成
例如:将 DEF 移动到枚举的顶部
命名{ 防御力, 美国广播公司, GHI};
//也改变数组。
char* 名称[] = {"def", "abc", "ghi"}
方法二。
打破枚举和数组之间绑定(bind)的一种方法是使用如下所示的创建函数。
int CreateNamesArray(){
Names[GHI] = "ghl";
Names[DEF] = "def";
Names[GHI] = "ghi";
};
有了这个,即使枚举发生变化,数组也不会受到影响。这种方法的一个缺点是我们需要在访问表之前调用该函数。
请建议哪种方法更好。这些表大约有 30-100 个条目。
最佳答案
您可以使用宏来生成它们:
#define LIST \
PAIR(ABC, "abc") \
PAIR(DEF, "def") \
PAIR(GHI, "ghi")
#define PAIR(key, value) key,
enum Names { LIST };
#undef PAIR
#define PAIR(key, value) value,
char* names[] = { LIST };
#undef PAIR
#undef LIST
更改 LIST
中的对以设置键/值对。
关于c++ - 枚举到数组绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14271463/
我是一名优秀的程序员,十分优秀!