如何实现通用列表类型?

时间:2015-07-13 03:01:37

标签: algorithm list data-structures

假设您正在开发一种语言,旨在用于脚本编写,原型设计,作为应用程序自动化的宏语言,或用作交互式计算器。它是动态类型的,内存管理是隐含的,基于垃圾收集。在大多数情况下,您不希望用户使用高度优化的算法或精心挑选的微调数据结构。您希望提供平均性能不错的通用列表类型。它必须支持所有类型的操作:迭代,索引随机访问,前置和附加元素,插入,删除,映射,过滤,成员资格测试,连接,拆分,反转,排序,克隆,提取段。它可以用于少量和大量元素(但您可以假设它适合物理内存)。它仅用于单线程访问,您无需关心线程安全性。您希望用户使用此通用列表类型,无论他们的场景或使用模式是什么。一些用户可能希望将其用作稀疏数组,其中大多数元素具有一些默认值(例如0),并且只有少数元素具有非默认值。

您会选择哪种实施方式?

我们假设您有能力投入大量的开发工作,因此解决方案不一定非常简单。例如,您可以实现内部数据组织的不同方式,并根据元素数量或使用模式在它们之间切换。高性能是比减少内存消耗更重要的目标,因此如果它能够赢得性能,您可以承受一些内存开销。

0 个答案:

没有答案