【发布时间】:2023-02-10 15:18:59
【问题描述】:
C++ 有 std::vector,Java 有 ArrayList,许多其他语言都有自己的动态分配数组形式。当动态数组空间不足时,它会重新分配到更大的区域,并将旧值复制到新数组中。这种阵列性能的一个核心问题是阵列大小增长的速度有多快。如果你总是只增长到足以适应当前的推动,你最终每次都会重新分配。因此,将数组大小加倍或乘以 1.5 倍是有意义的。
有理想的生长因子吗? 2倍? 1.5倍?我所说的理想是指数学上合理的、最佳平衡性能和浪费的内存。我意识到,理论上,鉴于您的应用程序可能具有任何潜在的推送分布,这在某种程度上取决于应用程序。但我很想知道是否存在“通常”最好的值,或者在某些严格约束下被认为是最好的值。
我听说某处有一篇关于此的论文,但我一直找不到。
【问题讨论】:
-
hyperskill.org 把我带到了这里!
标签: arrays math vector arraylist dynamic-arrays