intset结构体:
typedef struct intset {
uint32_t encoding;
uint32_t length;
int8_t contents[];
} intset;
encoding保存编码方式:INTSET_ENC_INT16、INTSET_ENC_INT32和INTSET_ENC_INT64;
length保存元素个数;
contents保存实际数组,int16_t[]、int32_t[]或int64_t[];
元素是有序保存的数组;
元素插入:
当插入的元素不能用intset->encoding方式保存时,也就是说新元素超出intset->encoding所能表示的范围,则需要升级intset->encoding到新元素对应的编码方式;
其他情况,直接二分查找到要插入的位置,resize && move && set;
元素删除:
首先,编码方式过滤;
二分查找元素位置,move && resize;