我想实现一个容器。数据将存储在动态分配的数组中。我需要有关内存重新分配的建议。
基本上,我想要一个公式,说明当数组已满时我应该使数组变大多少。我认为一个常数值是次优的,因为数组越大,复制它所需的时间就越长。
例如,如果一个数组可以存储 1000000 个双精度并且它已满,那么重新分配 1000005 个双精度将是愚蠢的。去 1001000 会是一个更好的主意。相反,如果我有一个包含 5 个双精度的数组并且它已满,将其扩大到 1005 个单位同样愚蠢。也许每次都将它放大 10%(或者像 20+10% 这样在小型阵列上也感觉不错)会是一个更好的主意。对此有何建议?