python – C中的高效数组查找

我正在尝试用C中的自定义语言编写一个简单的语言解释器.由于C的简单性,我想使用C over C.

我不确定如何在C中做的事情是存储变量和变量查找.

我打算将变量存储在一个数组中,但我想我需要一个可变大小的数组.

除了循环遍历数组之外,我也不知道从数组中查找变量的有效方法.

所以我想知道,创建可变大小数组的有效方法是什么? Python或Ruby或Go如何有效地存储和检索变量?

最佳答案

How does Python or Ruby or Go store and retrieve variables efficiently?

Python和Ruby使用hash-tables:变量的名称被转换为整数,并且该整数用作数组的索引.总是会发生几个名称冲突(转换为相同的整数),因此需要考虑在同一个插槽中从名称到值的多个绑定,但是只有少数名称可以检查每个名称.

Go被编译,因此在编译时将变量转换为地址(相对于堆栈或帧指针的静态或偏移).

what is an efficient way of creating a variable sized array?

如果你决定这样做,你会使用malloc和realloc.

在调整散列表的桶数组的大小的情况下,遗憾的是realloc没有用,因为需要对旧数组中的所有密钥进行逐个重新散列以找到它们在新数组中的位置.如果您知道解释器将解释的程序的最大大小,则可以直接以适用于最大程序的大小分配哈希表,并避免编写哈希表大小调整功能.

点赞