我对术语index
、key
、key-value pair
&关于TCL中的阵列的CCD_ 4,或者说一般的任何其它编程语言。
我知道我们对非关联数组使用index
,对关联数组使用键,但不明白为什么。
有人能帮我理解这些术语的确切含义(它们之间的区别)和用法吗。
感谢
index
通常是数字(它是一个整数,从零开始,增加到元素数减一)。它通过其在数组中的序号位置来标识感兴趣的元素。
key
通常是一个字符串或对象。它标识数组"中的一个元素;按名称">
element
只是数组中的一个项。
键用于";关联阵列";因为你是";关联";具有值的键。key-value pair
只是一个包含键和与该键关联的值的对象。
(高级)
如何使用键和索引会影响性能。如果一个";相联阵列";用哈希表实现,其性能为O(1)
。如果用二进制树实现,它就是O(n log n)
通过数组的索引访问数组总是O(1)
,因为找到正确的元素本质上是一个算术问题。如果既没有索引也没有键,则在数组中查找项是O(n)
。
术语可能有点令人困惑。Tcl所称的array
始终是一个关联数组(实现为哈希表),即使键恰好是数字。Tcllist
更像其他语言的数组。使用lindex l n
读取列表l中位置n处的值,其中n是数字(但也支持其他一些形式,如end
)。正如Robert Harvey所指出的,这是一个持续的时间运算。