一.整数集合的实现
typedef struct intset{
//编码方式
unit32_t encoding;
//集合包含的元素数量
unit32_t length;
//保存元素的数组
int8_t contents[];
}intset;
二.升级
当添加新的元素到整数集合中里面,并且新元素的类型比现有元素的类型都要长时,整数集合需要先进行升级,然后才将新的元素加入到整数集合中。
升级过程为三步:
- 根据新元素的类型,扩展整数集合底层数据的空间大小,并未新的元素分配空间。
- 将底层数组现有所有元素都转换为新元素相同的类型,并将转换后的元素放到正确的位置上,并且在放置的过程中,继续维持底层数组的有序顺序不变。
- 将新元素添加到底层数组中。
三.升级的好处
- 提升灵活性
- 节约内存
四.降级
整数集合不支持降级操作,一旦对数组进行了升级,编码就会一直保持升级后的状态。