我正在使用哈希表作为多重映射,并且我想删除以前的任何绑定(bind)。 Hashtbl.remove 只是删除当前绑定(bind)。 我正在考虑类似删除哈希 x y 的操作,它可以删除 y 到 x 的绑定(bind)。 如果有多个绑定(bind) x y,则应删除其中之一。 我有一些可用的代码,但它太复杂而且太慢(包括 for 循环等)
我希望它像这样工作:
Hashtbl.find_all 哈希 1 ;; 返回 [1;2;3;3;4]
删除哈希 1 3 ;;
Hashtbl.find_all 哈希 1 ;; 返回 [1;2;3;4]
最佳答案
我想说这并不是 Hashtbl
的真正设计用途,因此它不会特别方便。 Hashtbl
中没有用于删除或添加一个键的多个绑定(bind)的功能,因此您必须一次添加和删除一个。您的迭代解决方案可能与您预期的一样好。
显式处理多个绑定(bind)可能会更好,即将每个键绑定(bind)到显式(多)值集。在更改绑定(bind)时,这将提供比线性行为更好的行为。
关于OCAML hashtbl 删除特定绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17015810/