负载因子说的是什么
第 1 步:4 格装了 3 个:挤到 0.75 第 2 步:再装就太挤:要扩容 第 3 步:24 按 8 格重新算:第 0 格 第 4 步:17 按 8 格重新算:第 1 格 第 5 步:15 按 8 格重新算:第 7 格 24 17 15
负载因子太高会怎样(C++)
负载因子一路涨上去,后果是【0】。
现在的负载因子是多少
运行下面这段程序(8 格的表装了 4 条): #include <iostream> #include <string> #include <utility> #include <vector>
扩容之后有几格
一张 4 格的表装到第 4 条时超过了阈值,要扩成两倍。运行下面这段程序: #include <iostream> #include <string> #include <utility> #includ
算一算挤不挤
补全 load:返回负载因子(已装条数 ÷ 总格子数)。补全后输出 8 格表装 4 条时的负载因子。 (本题用 g++ -std=c++17 -O0 编译。)
挤到一定程度就换大房子
补全 maybe_grow:负载因子超过 0.75 就把容量扩成两倍,返回新容量;没超过就原样返回。4 格的表装了 4 条,补全后输出新的容量。 (本题用 g++ -std=c++17 -O0 编译。)
换了房子要重新算位置
rehash 不是把内容原样搬过去——格子数变了,每个键算出来的槽位也跟着变。补全 rehash:把 4 格表里的学号重新放进一张 8 格表。补全后输出 15 号在新表里坐第几格。 (本题用 g++ -std=c++17 -O0 编译。)
搬完之后一个都不能少
同一个 rehash。搬家最容易出的错是漏人。补全后输出新表里非空的格子有几个,和搬之前对上。 (本题用 g++ -std=c++17 -O0 编译。)
bucket_count() 返回什么
第 1 步:4 格装了 3 个:挤到 0.75 第 2 步:再装就太挤:要扩容 第 3 步:24 按 8 格重新算:第 0 格 第 4 步:17 按 8 格重新算:第 1 格 第 5 步:15 按 8 格重新算:第 7 格 24 17 15
reserve(n) 的作用
提前调用 m.reserve(n) 的好处是【0】。