寻找生产质量哈希表/无序映射实现学习? 在C或C++或Python中寻找好的源代码,以理解如何实现哈希函数,以及如何使用它实现哈希表。 关于散列fn和散列表实现如何工作的非常好的材料
提前感谢。哈希表是Python的核心,既是“dict”类型,也是类和名称空间的实现,因此多年来对实现进行了改进和优化。您可以看到dict对象的C源代码寻找生产质量哈希表/无序映射实现学习? 在C或C++或Python中寻找好的源代码,以理解如何实现哈希函数,以及如何使用它实现哈希表。 关于散列fn和散列表实现如何工作的非常好的材料,c++,python,c,hashtable,hash,C++,Python,C,Hashtable,Hash,提前感谢。哈希表是Python的核心,既是“dict”类型,也是类和名称空间的实现,因此多年来对实现进行了改进和优化。您可以看到dict对象的C源代码 每种Python类型都实现自己的哈希函数—浏览源代码以查找其他对象以查看它们的实现。哈希表对于Python来说非常重要,无论是作为“dict”类型还是用于类和名称空间的实现,因此多年来对实现进行了改进和优化。您可以看到dict对象的C源代码 每种Python类型都实现自己的哈希函数-浏览源代码以查找其他对象以查看它们的实现。如果您想学习,我建议您
每种Python类型都实现自己的哈希函数—浏览源代码以查找其他对象以查看它们的实现。哈希表对于Python来说非常重要,无论是作为“dict”类型还是用于类和名称空间的实现,因此多年来对实现进行了改进和优化。您可以看到dict对象的C源代码
每种Python类型都实现自己的哈希函数-浏览源代码以查找其他对象以查看它们的实现。如果您想学习,我建议您看看
Java.util.HashMap
的Java实现。它的代码清晰,文档丰富,相对较短。承认,它既不是C,也不是C++,也不是Python,但是你可能不想读GNU LBC++即将实现的一个哈希表,这首先是由C++标准模板库的复杂性组成的。
首先,您应该阅读java.util.Map
接口的定义。然后,您可以直接跳转到java.util.HashMap
的详细信息。您将在java.util.AbstractMap
中找到缺少的所有内容
好的散列函数的实现独立于编程语言。它的基本任务是将一个任意大的值集映射到一个小的值集(通常是某种整数类型),以便得到的值均匀分布。如果您想学习,我建议您看看
Java.util.HashMap
的Java实现。它的代码清晰,文档丰富,相对较短。承认,它既不是C,也不是C++,也不是Python,但是你可能不想读GNU LBC++即将实现的一个哈希表,这首先是由C++标准模板库的复杂性组成的。
首先,您应该阅读java.util.Map
接口的定义。然后,您可以直接跳转到java.util.HashMap
的详细信息。您将在java.util.AbstractMap
中找到缺少的所有内容
好的散列函数的实现独立于编程语言。它的基本任务是将一个任意大的值集映射到一个小的值集(通常是某种整数类型),以便得到的值均匀分布。您的问题有一个问题:哈希映射的类型和用途一样多 有许多策略可以处理哈希冲突和重新分配,具体取决于您的约束条件。当然,你们可能会发现一个一般的解决方案,它大部分都是合适的,但若我是你们,我会看看维基百科(就像丹尼斯建议的那个样),了解各种实现的微妙之处 正如我所说,你可以从两个方面来考虑这些策略:
- 处理哈希冲突:Bucket,哪种?公开寻址?双重散列李>
- 再分配:冻结地图还是摊销线性
原子操作
可以获得无锁多线程hashmap,正如Cliff Click()在Java中所证明的那样
正如你所看到的,没有一种尺寸适合所有人。我会先考虑学习原则,然后再学习实施细节。
- C++
使用链表存储桶并冻结映射策略,不考虑与STL的正常同步std::unordered_map
- Python
是该语言的基础,我不知道他们选择了什么策略dict
- 处理哈希冲突:Bucket,哪种?公开寻址?双重散列李>
- 再分配:冻结地图还是摊销线性
- 您的问题有一个问题:哈希映射的类型和用途一样多
有许多策略可以处理哈希冲突和重新分配,具体取决于您的约束条件。当然,你们可能会发现一个一般的解决方案,它大部分都是合适的,但若我是你们,我会看看维基百科(就像丹尼斯建议的那个样),了解各种实现的微妙之处
正如我所说,你可以从两个方面来考虑这些策略:
原子操作
可以获得无锁多线程hashmap,正如Cliff Click()在Java中所证明的那样
正如你所看到的,没有一种尺寸适合所有人。我会先考虑学习原则,然后再学习实施细节。
- C++
使用链表存储桶并冻结映射策略,不考虑与STL的正常同步std::unordered_map
- Python
是该语言的基础,我不知道他们选择了什么策略dict