module Make:
构建弱哈希集结构实现的函子。 H.equal
不能是物理相等性,因为只将其在集合中的元素的浅拷贝提供给它。
参数 |
|
type
data
存储在表中的元素的类型。
type
t
包含类型为 data
的元素的表的类型。请注意,弱哈希集不能使用 output_value
或 Marshal
模块的函数进行封送。
val create : int -> t
create n
创建一个新的空弱哈希集,初始大小为 n
。表将根据需要增长。
val clear : t -> unit
从表中移除所有元素。
val merge : t -> data -> data
merge t x
返回在 t
中找到的 x
的实例(如果存在),否则将 x
添加到 t
并返回 x
。
val add : t -> data -> unit
add t x
将 x
添加到 t
。如果 t
中已经存在 x
的实例,则后续对 find
和 merge
的调用将返回哪个实例是不确定的。
val remove : t -> data -> unit
remove t x
从 t
中移除一个 x
的实例。如果 t
中不存在 x
的实例,则不执行任何操作。
val find : t -> data -> data
find t x
返回在 t
中找到的 x
的实例。
Not_found
如果不存在这样的元素。val find_opt : t -> data -> data option
find_opt t x
返回在 t
中找到的 x
的实例,如果不存在这样的元素则返回 None
。
val find_all : t -> data -> data list
find_all t x
返回在 t
中找到的所有 x
实例的列表。
val mem : t -> data -> bool
mem t x
如果 t
中至少存在一个 x
的实例,则返回 true
,否则返回 false。
val iter : (data -> unit) -> t -> unit
iter f t
以某种未指定的顺序对 t
的每个元素调用 f
。如果 f
尝试更改 t
本身,则未指定会发生什么。
val fold : (data -> 'acc -> 'acc) -> t -> 'acc -> 'acc
fold f t init
计算 (f d1 (... (f dN init)))
,其中 d1 ... dN
是 t
中的元素,以某种未指定的顺序排列。如果 f
尝试更改 t
本身,则未指定会发生什么。
val count : t -> int
计算表中元素的数量。 count t
给出的结果与 fold (fun _ n -> n+1) t 0
相同,但不会延迟已删除元素的释放。
val stats : t -> int * int * int * int * int * int
返回有关表的统计信息。这些数字按顺序排列:表长度、条目数、桶长度之和、最小桶长度、中位数桶长度、最大桶长度。