跳转至

std.hashmap

tier: alloc · since: std-0.9 stability: experimental

HMapS[V](Str 键)/HMapI[V](I64 键):可变哈希映射 (开放寻址,线性探查,Box 载体) 口径:put 插入均摊 O(1)(负载 3/4 倍增重建);覆盖写 O(n) 重建(发射面经 Box 泛型元素直写无装载语义,走重建+字段重赋值保双臂逐字一致,FMap 覆盖写同阶, 文档化);del = 活词表重建 O(n)(v0.9 无墓碑,fdel 先例,不缩容);get O(1)。 迭代序 = 插入序(keys 追加式,宪章 8 确定性)。 设计修订(2026-10-09 实施 batch,R3 二次修订):注入形(hash/eq fn 形参) 裁撤——具体型 fn 值传入泛型 fn 型形参的发射 trampoline 按 ct_i 裸传, heap Darwin 4c known-red 同款在册债;改具体键双件,哈希/相等内联。 泛型键 K:Hash+Eq bound 面仍为 W3 触发件(Hash trait + 发射面 trait 方法)。 可变载体 = Box[HMapS[V]]/Box[HMapI[V]] 写穿别名共享(宪章 3a 附则; fx_boxalias/gui_driver 先例)。哈希全程 < 2^31(C10 eval 乘法门, fmap mod 100003 先例);I64 侧压域两步 mod + as[I32]() 方法形收窄 (pb.ct:280 先例);无比特算符(&/|/^ 解释面缺口)。 发射面形状纪律(2026-10-09 探针 B1–B4 定):泛型元素读经形参 List 助手 (at/_copy_skip,sort/fmap 同形);经 Box 泛型元素值位读写在册红(登记 COVERAGE);slots 具体型经 Box 直读直写。 命名 hms/hmi_ 前缀:use 合并单一命名空间,与 map/set/heap/fmap 的 put/get/has 错开(同名 decl 静默首胜,FMap f* 先例)。T1 零 use(宪章 2)。

pub fn

Signature Returns Description
hms_new[V]() Box[HMapS[V]] 空映射:初容 16 槽全 -1;keys/vals 追加式(规避泛型 V 零值构造,FMap 先例)
hms_put[V](b: Box[HMapS[V]], k: Str, v: V) `` 就地写:存在则覆盖(O(n) 重建 vals);否则负载 > 3/4 先倍增再探空槽插入
(O(1) 均摊:push 经 Box + slots 具体型直写)
hms_get[V](b: Box[HMapS[V]], k: Str, dft: V) V 取值:缺键返回 dft(FMap fget 先例,避 Option 泛型面)
hms_has[V](b: Box[HMapS[V]], k: Str) Bool —
hms_del[V](b: Box[HMapS[V]], k: Str) `` 删除键:活词表原序重建 O(n)(v0.9 无墓碑;不缩容);不存在原样返回
hms_len[V](b: Box[HMapS[V]]) I32 键数
hms_keys[V](b: Box[HMapS[V]]) List[Str] 键表拷贝(插入序;拷贝非别名,保 keys 追加式不变量)
hms_vals[V](b: Box[HMapS[V]]) List[V] 值表拷贝(与 hms_keys 一一对应)
hmi_new[V]() Box[HMapI[V]] 空映射:同 hms_new
hmi_put[V](b: Box[HMapI[V]], k: I64, v: V) `` 就地写:同 hms_put 口径
hmi_get[V](b: Box[HMapI[V]], k: I64, dft: V) V 取值:缺键返回 dft
hmi_has[V](b: Box[HMapI[V]], k: I64) Bool —
hmi_del[V](b: Box[HMapI[V]], k: I64) `` 删除键:活词表原序重建 O(n);不存在原样返回
hmi_len[V](b: Box[HMapI[V]]) I32 键数
hmi_keys[V](b: Box[HMapI[V]]) List[I64] 键表拷贝(插入序)
hmi_vals[V](b: Box[HMapI[V]]) List[V] 值表拷贝(与 hmi_keys 一一对应)