结构体当键要提供什么

自己定义的结构体要当 unordered_map 的键,需要提供【0】。

开始练习 →

reserve 之后桶够不够

运行下面这段程序: #include <iostream> #include <string> #include <utility> #include <vector> using names

开始练习 →

默认的最大负载因子

运行下面这段程序: #include <iostream> #include <string> #include <utility> #include <vector> using names

开始练习 →

亲眼看到一次 rehash

补全:往 unordered_map 里依次插入 1 到 1000,每插一个就看看 bucket_count() 有没有变。变过就输出 看到了,一次都没变就输出 没看到。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

reserve 以后一次都不搬家

补全:插入 1000 个元素之前先 reserve 够,然后统计插入过程中 bucket_count() 变了几次。一次都没变输出 一次都没有,否则输出 还是搬了。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

补全:结构体键的相等比较

补全 PointEq:两个点的 x、y 都相等才算同一个点。然后数一数 5 个点里有几个不同的点。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

坏哈希会挤成一桶

下面的 BadHash 对任何键都返回 0。补全:插入 100 个不同的键之后,找出最大的那个桶里有几个元素(用 bucket_size(i))。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

手动 rehash 把桶开大

补全:插完 1000 个元素之后,调用 rehash 把桶数开到至少 4096,再检查桶数和元素个数。输出「桶够不够/元素个数」,格式如 桶够了/1000。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

够用的哈希表至少要有什么

第 1 步:第 7 格已经有 15 第 2 步:23 % 8 也等于 7:撞上了 第 3 步:第 7 格挂一串,两个都装下 第 4 步:查 23:先到第 7 格,再比 15 第 5 步:不是它,往后比:找到 23 24 17 13 15 1

开始练习 →

为什么说哈希表平均是 O(1)

哈希表的复杂度要加「平均」两个字,是因为【0】。

开始练习 →