将char *转换为枚举值的有效方法
||
在C语言中,我可以使用预处理器将ѭ0转换为等效的字符串。
但是,有什么巧妙的技巧可以将
char*
转换为enum
。
我可以为每个字符串使用if语句和strcmp
,并返回等效的enum
,但是还有一种更优雅的方法吗?
没有找到相关结果
已邀请:
6 个回复
素汞读
补蹲农界维
号拳藐孔妇
可能有更有效的方法。在开始使用它们之前,请记住要测量此映射对运行时的实际影响。 有第二个数组,它使字符串保持排序,并使用以下命令查找字符串 二进制搜索。第一张表仍然存在,因此映射整数仍然很快 到一个字符串。 将哈希表用于第二个数组。 如果您完全放弃第一个数组,并使用哈希值作为整数 可以找到一个对您的特定数据没有冲突的哈希函数。这应该 如果您无论如何都要使用枚举,那将是完全可行的,此后 一组值在编译时是固定的。 (您仍然需要哈希表进行反向 映射:从整数到字符串。) 例如,如果您的值表示工作日,则使用前两个字符作为哈希函数就足够了。有关在一般情况下构造此类哈希函数的一些相关信息的指针,请参见http://en.wikipedia.org/wiki/Perfect_hashing。
链眷克袒姜
醒荒捆府绣
车料
的示例: