gpt4 book ai didi

c++ - 枚举到数组绑定(bind)

转载 作者:太空狗 更新时间:2023-10-29 20:43:52 27 4
gpt4 key购买 nike

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com