# 结构

intset

# 用处

  • 整数集合

# 定义

typedef struct intset {
    // 编码方式,只支持升级,不支持降级
    uint32_t encoding;
    // 集合包含的元素数量,contents 的长度
    uint32_t length;
    // 保存元素的数组,有序,不重复
    int8_t contents[];
}

# 升级

当新加入元素的类型比整数集合所有元素的类型都长时,就要先进行升级,才能加入。分为三步:

  1. 根据新元素类型扩展数组大小,并为其分配空间
  2. 将现有元素转换成与新元素相同的类型
  3. 将新元素加入到数组中

好处:

  • 提升灵活性
  • 节约内存

# 降级

删除时不支持降级。