为什么要使用固定长度数组而不是可变长度数据结构来实现堆栈?

时间:2015-11-15 22:22:41

标签: arrays data-structures stack fixed

我知道如何实现这两者,但是我想知道基于固定长度数组的堆栈的用途。是否存在您永远不希望堆栈增长超过X的情况?

2 个答案:

答案 0 :(得分:1)

如果您有选择,通常会这样做以加快速度。

根据您的编程语言,可以提供更多信息,但通常优点是速度。通过使用固定大小,保留的内存块的大小不再需要与任何更改混杂在一起。你的内存可能会碎片化(所以你的数据有点在这里,有点在那里,每次更改数组都会变得更糟。)所以使用固定大小会将它们保存在一个地方。 / p>

许多语言都有垃圾收集例程,例如Javascript,如果你像电子游戏一样创造平滑和实时的东西,你会想要使用固定的大小,因为那时它不会每隔几秒就停止垃圾在Javascript的情况下,您还可以获得静态输入数组的优势,这意味着虚拟机不再需要推断出变量的类型,并检查是否需要转换。

例如,如果您使用C或C ++编程,从文件读取(即加载图像)的典型过程是检查要加载到内存中的文件的大小,然后准确地动态分配你需要的内存大小。

推荐阅读:Cost of array operations in Javascript.这将教你内存碎片和垃圾收集。这里获得的见解适用于许多其他语言。 (例如Node,PHP,ActionScript,Ruby等)

答案 1 :(得分:1)

其中一个可以是滚动队列或环形缓冲区,这意味着记录最多N个数据点。这对于记录移动平均值很有用,例如过去N秒的平均延迟。重新使用相同的数组元素并只是移动开始和结束可以减少垃圾收集,而不是删除结束元素。