OCAML hashtbl 删除特定绑定(bind)

标签 ocaml hashtable

我正在使用哈希表作为多重映射,并且我想删除以前的任何绑定(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/

相关文章:

type-conversion - OCaml 中的类型化整型常量

ocaml - 动态创建两种记录类型之一的函数

perl - 将散列中的值相加 (Perl)

java - 创建通用哈希表时出错

Powershell 管道 - 返回一个在管道内创建的新对象

ocaml - 将camlp4和camlp5结合在ocamlopt的-pp字符串中?

ocaml - 获取 OCaml 中 float 的精度

keyboard - OCaml 在没有图形窗口的情况下读取按键

c - 在 g_hash_table 中使用 int 作为键

javascript - 如果键不存在,如何在关联的 JavaScript 数组中获取最近的键索引?