寻找生产质量哈希表/无序映射实现学习? 在C或C++或Python中寻找好的源代码,以理解如何实现哈希函数,以及如何使用它实现哈希表。 关于散列fn和散列表实现如何工作的非常好的材料

寻找生产质量哈希表/无序映射实现学习? 在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的核心,既是“dict”类型,也是类和名称空间的实现,因此多年来对实现进行了改进和优化。您可以看到dict对象的C源代码


每种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++
    std::unordered_map
    使用链表存储桶并冻结映射策略,不考虑与STL的正常同步
  • Python
    dict
    是该语言的基础,我不知道他们选择了什么策略

    • 您的问题有一个问题:哈希映射的类型和用途一样多

      有许多策略可以处理哈希冲突和重新分配,具体取决于您的约束条件。当然,你们可能会发现一个一般的解决方案,它大部分都是合适的,但若我是你们,我会看看维基百科(就像丹尼斯建议的那个样),了解各种实现的微妙之处

      正如我所说,你可以从两个方面来考虑这些策略:

      • 处理哈希冲突:Bucket,哪种?公开寻址?双重散列
      • 再分配:冻结地图还是摊销线性
      另外,是否希望烘焙多线程支持?使用
      原子操作
      可以获得无锁多线程hashmap,正如Cliff Click()在Java中所证明的那样

      正如你所看到的,没有一种尺寸适合所有人。我会先考虑学习原则,然后再学习实施细节。

      • C++
        std::unordered_map
        使用链表存储桶并冻结映射策略,不考虑与STL的正常同步
      • Python
        dict
        是该语言的基础,我不知道他们选择了什么策略

      散列函数的详细信息基于要散列的对象的类型。Wikipedia提供了各种信息,包括指向多个实现的链接。散列函数的详细信息基于要散列的对象的类型。Wikipedia提供了各种信息,包括指向多个实现的链接。