我使用哈希表作为多映射,我想删除任何以前的绑定。 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]
答案 0 :(得分:2)
我说这不是Hashtbl
的设计方式,所以它不会特别方便。 Hashtbl
中没有用于删除或添加密钥的多个绑定的功能,因此您必须一次添加和删除它们。您的迭代解决方案可能与您期望的一样好。
显式处理多个绑定可能更好,即将每个键绑定到一组显式(多)值。在更改绑定时,这将比线性行为更好。