gpt4 book ai didi

types - Lisp 中的哈希表类型

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:06 25 4
gpt4 key购买 nike

我发现,在 CL 哈希表中有一个 HASH-TABLE 类型(令人惊讶)。然而,向量可以只是 VECTOR,但也可以进一步指定为(向量编号 12),例如。

哈希表似乎很自然地具有列表类型,例如 (hash-table number cons) 或其他东西,但它似乎不起作用,而且我找不到任何对它的引用。有什么建议吗?

最佳答案

TL;DR 类型化向量可能针对内存使用进行了优化,但类型化哈希表大多毫无意义。


免责声明:这主要是基于直觉,甚至离权威答案还差得很远。

类型化向量很有用,因为它们是在内存中连续存储数据的最实用方法——如果您知道所有元素的类型(并且由于知道类型,还有大小),分配足够的内存就很简单了将它们全部存储在一起。您可能已经知道,CL 的位向量就是这样:对最佳存储的、可单独访问的位的抽象。如果没有类型信息,您必须存储指向分散的实际数据片段的指针向量。

如果您熟悉简单哈希表的实现方式,那么您就会知道类型信息在这里用处不大。将实际数据存储在表中有点尴尬(通常是指针向量),要么是因为处理哈希键冲突变得更加困难(否则你最终会得到一个链表),要么是因为调整大小该表将涉及将所有数据复制到新表,而不是仅仅更改几个指针。当然,调整向量的大小也需要复制所有内容,但它是一步完成的,而对于哈希表,必须对每个元素执行一次,因为它们在表中的位置会发生变化。几乎没有任何好处。

此外,类型化的哈希表听起来不太 Lispy。

关于types - Lisp 中的哈希表类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52674209/

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