降级¶
整数集合不支持降级操作, 一旦对数组进行了升级, 编码就会一直保持升级后的状态。
举个例子,
对于图 6-11 所示的整数集合来说,
即使我们将集合里唯一一个真正需要使用 int64_t
类型来保存的元素 4294967295
删除了,
整数集合的编码仍然会维持 INTSET_ENC_INT64
,
底层数组也仍然会是 int64_t
类型的,
如图 6-12 所示。
![digraph {
label = "\n 图 6-11 数组编码为 INTSET_ENC_INT64 的整数集合";
rankdir = LR;
node [shape = record];
intset [label = " intset | encoding \n INTSET_ENC_INT64 | length \n 5 | <contents> contents "];
contents [label = " { 5 | 10 | 12 | 65535 | 4294967295 } "];
intset:contents -> contents;
}](../../_images/graphviz-5946eeb7748a5ecc5cda12c2d512518e647d76f8.png)
![digraph {
label = "\n 图 6-12 删除 4294967295 之后的整数集合";
rankdir = LR;
node [shape = record];
intset [label = " intset | encoding \n INTSET_ENC_INT64 | length \n 4 | <contents> contents "];
contents [label = " { 5 | 10 | 12 | 65535 } "];
intset:contents -> contents;
}](../../_images/graphviz-b5d2fe7000f69f47140ee68caa2a5936dce33561.png)
整数集合不支持降级操作, 一旦对数组进行了升级, 编码就会一直保持升级后的状态。
举个例子,
对于图 6-11 所示的整数集合来说,
即使我们将集合里唯一一个真正需要使用 int64_t
类型来保存的元素 4294967295
删除了,
整数集合的编码仍然会维持 INTSET_ENC_INT64
,
底层数组也仍然会是 int64_t
类型的,
如图 6-12 所示。