高效实现"常量"设置ADT

abe*_*eln 4 language-agnostic algorithm set data-structures

我需要实现一个"常量"集.也就是说,只支持成员资格测试的数据结构.另外(当然),我需要一个工厂例程,给定一个元素列表,构造一个常量集.

请注意,不仅在常量集上不允许变异,而且我不需要返回新常量集的"add"操作(也就是说,一旦初始化发生,我只对测试元素是否感兴趣是否在集合中).

Goold旧哈希表在这里是一个明显的选择,但我想知道,我们能否以某种方式利用我们只需要支持单个操作的事实(并且,在构造集合时,我们知道它的所有元素将是什么)?是否有一个数据结构(可能是一种特殊类型的哈希表)在这里表现得特别好?

tem*_*def 5

正如@Alexandre C.在评论中提到的,这是使用完美哈希表的绝佳位置.完美的哈希表是一个哈希表,它使用哈希函数来保证其元素之间不会发生冲突.有各种方案来实现这一目标; 最常见和最简单的选项之一是使用FKS完美哈希表,它使用两层哈希表.它保证最坏情况下的O(1)成员资格测试,并且在实践中非常有效.

希望这可以帮助!