向量集 - VecSet
类似于 VecMap,VecSet 是一种基于向量的数据结构。集合在以下用例中非常有用:
- 对输入的元素向量进行去重。
- 在插入元素到集合中时避免重复。
需要注意的是,VecSet 的插入和删除操作是 O(n) 的,而不是像 HashSet 的 O(1) 或基于树的集合的 O(log n)。这是因为 VecSet 是由向量支持的,它需要扫描整个向量以检查重复项。另一个限制是,VecSet 不应用于存储大量元素,因为所有操作的 gas 成本将会很高。
创建 VecSet 的方法如下:
let mut set = vec_set::empty<u64>();
将元素插入集合中:
vec_set::insert(&mut set, 1);
插入到 VecSet 的元素必须具有 copy 和 drop 属性。
从集合中删除元素:
vec_set::remove(&mut set, &1);
检查集合中是否存在某个元素:
vec_set::contains(&set, &1);
获取集合中的元素数量:
vec_set::size(&set);
检查集合是否为空:
vec_set::is_empty(&set);