OCAML hashtbl删除特定绑定

时间:2013-06-10 01:27:11

标签: ocaml hashtable

我使用哈希表作为多映射,我想删除任何以前的绑定。 Hashtbl.remove只删除当前绑定。 我正在考虑删除散列x y之类的东西,它删除了y与x的绑定。 如果有多个绑定x y,则应删除其中一个绑定。 我有一些工作代码,但它太复杂和缓慢(包括循环等)

我希望它能像这样工作:

Hashtbl.find_all hash 1 ;; 返回[1; 2; 3; 3; 4]

删除哈希1 3 ;;

Hashtbl.find_all hash 1 ;; 返回[1; 2; 3; 4]

1 个答案:

答案 0 :(得分:2)

我说这不是Hashtbl的设计方式,所以它不会特别方便。 Hashtbl中没有用于删除或添加密钥的多个绑定的功能,因此您必须一次添加和删除它们。您的迭代解决方案可能与您期望的一样好。

显式处理多个绑定可能更好,即将每个键绑定到一组显式(多)值。在更改绑定时,这将比线性行为更好。