什么是阴影数组以及如何实现? 我在阅读有关编译器优化的内容时完成了这个术语,但我找不到任何实质性的参考资料。
答案 0 :(得分:12)
当使用数组实现动态可调整大小的抽象数据类型(例如List,Queue或Stack)时,遇到的一个明显问题是数组本身不能自由调整大小。在某些时候,如果有人向数组中添加了足够多的项目,那么最终会耗尽空间。
这个问题的天真解决方案是等到正在使用的数组空间用完,然后创建一个新的更大的数组,将旧数组中的所有项目复制到新数组中,并使用新数组开始
使用抽象数据类型实现的阴影数组是对此的替代方法。不是等到旧数组已满,而是在正在使用的数组上传递一些饱和度阈值之后创建第二个更大的数组。此后,当项目被添加到旧数组时,多个项目将从旧数组复制到阴影数组,这样当旧数组已满时,所有项目都已复制到新数组。
使用影子阵列实现而不是天真的“最后复制一切”方法的优点是每个添加操作所需的时间更加一致。
答案 1 :(得分:0)
我认为它是动态数组的一种形式。
术语“阴影”指的是试图以良好性能调整其大小但隐藏在简单界面背后的基础算法。 (例如Java中的ArrayList)
答案 2 :(得分:0)
this您要找的是什么? (滚动到底部。)