将整数映射到整数的理想数据结构?

Mic*_*ael 4 c algorithm data-structures

我不会详细介绍,但我试图实现类似于Boyer-Moore-Horspool算法的算法,只使用十六进制颜色值而不是字符(即,范围更大).

按照维基百科上的例子,我最初有这个:

size_t jump_table[0xFFFFFF + 1];
memset(jump_table, default_value, sizeof(jump_table);
Run Code Online (Sandbox Code Playgroud)

但是,0xFFFFFF显然是一个巨大的数字,这很快导致C出现seg-fault(但不是堆栈溢出,令人失望).

基本上,我需要的是一个有效的关联数组映射整数到整数.我正在考虑使用哈希表,但是对于每个条目都有一个malloc'd结构对我来说似乎有些过分(我也不需要生成哈希值,因为每个键都是一个唯一的整数,并且不能有重复的条目).

有没有人有任何建议的替代方案?我对此过于务实吗?

更新

对于那些感兴趣的人,我最终通过uthash库使用哈希表.

Ste*_*non 7

0xffffff在大多数系统上放置堆栈都太大了,但你绝对可以malloc使用那么大的缓冲区(至少在当前的计算机上;在智能手机上没有那么多).是否应该为此任务执行此操作是一个单独的问题.

编辑:根据评论,如果您希望常见案例的条目数量相对较少,而"此颜色不会出现在输入中"跳过值,您应该继续使用哈希映射(显然只存储实际出现在输入中的值).

(忽略之前对其他数据结构的讨论,这是基于对正在讨论的算法的错误回忆 - 你想使用哈希表)