map

std.collections.map

rec Map

pub rec Map[K, V];

带有用户提供的哈希和相等性函数的泛型哈希映射

alloc:用于后备存储的分配器 keys:键缓冲区 values:值缓冲区 states:每个槽的状态(空/占用/墓碑) len:条目数量 tombstones:墓碑槽的数量 cap:总槽数 hash_fn:接受 ptr 并返回 u64 的哈希函数 eq_fn:接受两个 ptr 并返回 bool 的相等性函数

fun init

pub fun init[K, V](alloc: *allocator.Allocator, hash_fn: fun(ptr) u64, eq_fn: fun(ptr, ptr) bool) Map[K, V];

创建一个空映射

alloc:用于后备存储的分配器 hash_fn:键的哈希函数 eq_fn:键的相等性函数 ret:一个新的空 Map[K, V]

fun dnit

pub fun dnit[K, V](m: *Map[K, V]) bool;

释放所有后备存储并重置映射

ret:如果内存成功释放则为 true

fun is_empty

pub fun is_empty[K, V](m: Map[K, V]) bool;

检查映射是否没有条目

ret:如果映射没有条目则为 true

fun length

pub fun length[K, V](m: Map[K, V]) usize;

返回映射中的条目数量

ret:条目数量

fun capacity

pub fun capacity[K, V](m: Map[K, V]) usize;

返回当前的槽容量

ret:槽容量

fun clear

pub fun clear[K, V](m: *Map[K, V]);

移除所有条目但保留已分配的容量

fun insert

pub fun insert[K, V](m: *Map[K, V], key: K, value: V) Result[bool, str];

插入或更新键值对

key:要插入的键 value:要关联的值 ret:如果插入了新条目则为 true,如果更新了现有条目则为 false

fun get

pub fun get[K, V](m: *Map[K, V], key: *K) Result[*V, str];

获取指向与键关联的值的指针

key:指向要查找的键的指针 ret:指向值的指针,或错误消息

fun contains

pub fun contains[K, V](m: *Map[K, V], key: *K) bool;

检查映射是否包含某个键

key:指向要检查的键的指针 ret:如果键存在则为 true

fun remove

pub fun remove[K, V](m: *Map[K, V], key: *K) Result[bool, str];

从映射中移除键值对

key:指向要移除的键的指针 ret:如果已移除则为 true,如果未找到键则为 false

fun hash_str

pub fun hash_str(p: ptr) u64;

字符串的 FNV-1a 哈希

fun eq_str

pub fun eq_str(pa: ptr, pb: ptr) bool;

字符串的相等性函数

fun hash_i64

pub fun hash_i64(p: ptr) u64;

i64 的 splitmix64 哈希

fun eq_i64

pub fun eq_i64(pa: ptr, pb: ptr) bool;

i64 的相等性函数

fun hash_u64

pub fun hash_u64(p: ptr) u64;

u64 的 splitmix64 哈希

fun eq_u64

pub fun eq_u64(pa: ptr, pb: ptr) bool;

u64 的相等性函数

fun hash_u32

pub fun hash_u32(p: ptr) u64;

u32 的 splitmix64 哈希

fun eq_u32

pub fun eq_u32(pa: ptr, pb: ptr) bool;

u32 的相等性函数