最多存储2^32-1个元素,支持取交集、并集、差集
内部编码:
- 整数集合(intset)
-
typedef struct intset{ uint32_t encoding; --- 编码类型(int8_t, int16_t...) uint32_t length; --- 元素个数 int8_t contents[]; --- 可能不是int8_t,由encoding指定 } intset;
适用于集合都是整数,且数量较小的情况。复杂度从O(1)变为O(n)。 优势在于集中存储,节省空间。
-
- 哈希表(hashtable)
-
集合在使用hash表时,value都是null
-
编码转换:
使用整数集合条件:
- 集合中元素数量小于512
- 集合中元素都是整数值