🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
整数集合的升级策略有两个好处, 一个是提升整数集合的灵活性, 另一个是尽可能地节约内存。 ## 提升灵活性 因为 C 语言是静态类型语言, 为了避免类型错误, 我们通常不会将两种不同类型的值放在同一个数据结构里面。 比如说, 我们一般只使用 `int16_t` 类型的数组来保存 `int16_t` 类型的值, 只使用 `int32_t` 类型的数组来保存 `int32_t` 类型的值, 诸如此类。 但是, 因为整数集合可以通过自动升级底层数组来适应新元素, 所以我们可以随意地将 `int16_t` 、 `int32_t` 或者 `int64_t` 类型的整数添加到集合中, 而不必担心出现类型错误, 这种做法非常灵活。 ## 节约内存 当然, 要让一个数组可以同时保存 `int16_t` 、 `int32_t` 、 `int64_t` 三种类型的值, 最简单的做法就是直接使用 `int64_t` 类型的数组作为整数集合的底层实现。 不过这样一来, 即使添加到整数集合里面的都是 `int16_t` 类型或者 `int32_t` 类型的值, 数组都需要使用 `int64_t` 类型的空间去保存它们, 从而出现浪费内存的情况。 而整数集合现在的做法既可以让集合能同时保存三种不同类型的值, 又可以确保升级操作只会在有需要的时候进行, 这可以尽量节省内存。 比如说, 如果我们一直只向整数集合添加 `int16_t` 类型的值, 那么整数集合的底层实现就会一直是 `int16_t` 类型的数组, 只有在我们要将`int32_t` 类型或者 `int64_t` 类型的值添加到集合时, 程序才会对数组进行升级。