2

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

我希望它像这样工作:

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

删除哈希 1 3 ;;

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

4

1 回答 1

2

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

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

于 2013-06-10T05:14:00.237 回答