Ocaml双哈希表
我一直在寻找在Ocaml中使用双哈希表的方法,但找不到它。我想做的是: 哈希:Ocaml双哈希表,ocaml,hashtable,double-hashing,Ocaml,Hashtable,Double Hashing,我一直在寻找在Ocaml中使用双哈希表的方法,但找不到它。我想做的是: 哈希:((“a”,1),(“b”,2),…),其中所有提到的元素都不会重复,例如,“a”不会再次出现,也不会出现2 所以,如果我找到一个像[1,“b”,2,“a”,…]这样的数组,我可以用它的键或值替换这些数字和字母的出现:[“a”,2,“b”,1,…] 谢谢 库容器数据具有CCBijection 如果您想要一个可变版本,可以将两个哈希表与 模块表:sig 输入(!'左,!'右)t (*或在OCaml 4.12之前: 输入(
((“a”,1),(“b”,2),…)
,其中所有提到的元素都不会重复,例如,“a”不会再次出现,也不会出现2
所以,如果我找到一个像[1,“b”,2,“a”,…]
这样的数组,我可以用它的键或值替换这些数字和字母的出现:[“a”,2,“b”,1,…]
谢谢 库容器数据具有CCBijection 如果您想要一个可变版本,可以将两个哈希表与
模块表:sig
输入(!'左,!'右)t
(*或在OCaml 4.12之前:
输入(!'左,!'右)t
*)
val add:'左->'右->('左,'右)t->单位
...
end=struct
type('a,'b)t={左:('a,'b)Hashtbl.t;右:('b,'a)Hashtbl.t}
让我们添加左右tbl=
Hashtbl.add tbl.left-right;
Hashtbl.add tbl.right-right-left
...
结束
库容器数据具有CCBijections
如果您想要一个可变版本,可以将两个哈希表与
模块表:sig
输入(!'左,!'右)t
(*或在OCaml 4.12之前:
输入(!'左,!'右)t
*)
val add:'左->'右->('左,'右)t->单位
...
end=struct
type('a,'b)t={左:('a,'b)Hashtbl.t;右:('b,'a)Hashtbl.t}
让我们添加左右tbl=
Hashtbl.add tbl.left-right;
Hashtbl.add tbl.right-right-left
...
结束
您能详细说明什么是“双哈希表”吗?它似乎不同于使用双哈希来解决冲突……您能详细说明什么是“双哈希表”吗?它似乎不同于使用双哈希来解决冲突。。。。