gpt4 book ai didi

lua - Lua 5.x 如何表示稀疏数组?

转载 作者:行者123 更新时间:2023-12-01 14:24:17 24 4
gpt4 key购买 nike

比如说,我有一个这样的数组:

T = {1,2,[1000] = 3, [-1] = -1}

我知道 1 和 2 将在连续数组部分,-1 将在哈希部分。但我不知道3会在哪里。它将如何在 Lua“内部”表示。2和3之间会不会有997个浪费的空间? 3 会被委托(delegate)给哈希部分以提高效率吗?是否会有 2 个链接的连续表,一个从索引 1 开始,第二个从索引 1000 开始?

最佳答案

这取决于您使用的 Lua 版本。在 Lua 4 中,表被严格地实现为哈希表。在 Lua 5 中,表部分是哈希表,部分是数组,请参阅 Lua Implementation其中第 4 节介绍了表和稀疏数组

The array part tries to store the values corresponding to integer keys from 1 to some limit n. Values corresponding to non-integer keys or to integer keys outside the range are stored in the hash part. ... The computed size of the array part is the largest n such that at least half the blocks between 1 and n are in use... and there is at least one slot used between n/2+1 and n.

在您的示例中,1000 可能在初始 n 之外,并且不会导致数组部分增长,因为它太稀疏了。

关于lua - Lua 5.x 如何表示稀疏数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26843589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com