【问题标题】:Abstract data types naming convention: (Dynamic) Array, Vector, Sequence, List, Container, Buffer抽象数据类型命名约定:(动态)Array、Vector、Sequence、List、Container、Buffer
【发布时间】:2014-01-22 15:05:49
【问题描述】:

让我们考虑一下(可以说)最著名的所有数据结构

  • 提供addappend 允许在(摊销的)恒定时间内(在集合的一端)添加数据,并且
  • 提供 O(1) 索引

显然我们都熟悉这个概念:在 Java 中我们称其为 ArrayList,在 C++ 中可能称为 vector,在 Python 中它是“列表”,在 Scala 中称为 ArrayBuffer 等等。

我的问题是:指代这些实现背后的抽象数据类型最合适的术语是什么,即哪个术语将(或应该?)与所有程序员提到的复杂性相关联,而不管他们的个人背景/语言如何?

【问题讨论】:

  • @SLaks:哦,我太傻了;为什么我在 Wikipedia 研究期间没有遇到此问题……这几乎解决了我的问题,如果您愿意将其发布为答案,我会接受。再考虑一下这个词,它也很有意义:词 Array 很可能触发与 O(1) 索引 和前缀 动态添加关联可以在O(1)中增长。与有点模糊的“向量”或“序列”相比(至少对我而言)要清晰得多。

标签: java c++ collections abstract-data-type


【解决方案1】:

这叫做Dynamic Array

【讨论】:

    【解决方案2】:

    我认为它应该是术语List。虽然该术语比您似乎正在寻找的更笼统,但我不知道在这种情况下具有相似含义的另一个词。

    文献也这样称呼它。

    还有维基百科:http://en.wikipedia.org/wiki/List_%28abstract_data_type%29(他们没有说列表需要 O(1) 的访问/插入/删除时间)

    【讨论】:

    • 就像你说的,列表有点不同,我认为ArrayList 是抽象数据类型 List 的实现,但是没有 ADT 指定索引必须是常数时间(据我所知)。
    猜你喜欢
    • 2010-09-30
    • 1970-01-01
    • 2019-12-13
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多