C++中自定义哈希表的实现

来源:14-5 实现属于我们自己的哈希表

阿阳2017

2023-01-26

老师你好,如果想用C++实现一个这节课的自定义哈希表,STL库中有类似TreeMap这样的数据结构吗?而且Java的Object类自带hashCode这样的方法,去计算hash值,这样对于所有的自定义类都可以自动计算hash值;而c++中,不知道有什么对应的数据结构;或者有什么好的思路去实现呢?

写回答

1回答

liuyubobobo

2023-01-26

首先,Java 中的 TreeMap 不是哈希表,是红黑树(所以叫 Tree。)


Java 中的 TreeMap,对应 C++ 中的 map;Java 中的 TreeSet,对应 C++ 中的 set。


Java 中的哈希表结构,对应 HashMap 和 HashSet。相应的,C++ 中的哈希表结构,对应 unordered_map 和 unordered_set。

Java 中的 HashMap,对应 C++ 中的 unordered_map;Java 中的 HashSet,对应 C++ 中的 unordered_set。


如果想在 C++ 中的自定义类中做自定义的哈希函数,需要使用 std::hash,不是 C++ 课程,对 C++ 的机制就不赘述了,感兴趣可以参考类似这样的讨论:https://stackoverflow.com/questions/17016175/c-unordered-map-using-a-custom-class-type-as-the-key


继续加油!:)


0
1
阿阳2017
非常感谢老师的耐心解答,了解到C++的stl相关知识,更加感觉到两种语言的共同性。
2023-01-26
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程