向量集 - 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);