无序容器在存储上组织为一组桶,每个桶保存零个或多个元素。
无序容器使用一个哈希函数将元素映射到桶。
unordered_map:用哈希数组织的map
unordered_set:用哈希数组织的set
unordered_multimap:用哈希数组织的map,关键字可以重复
unordered_multiset:用哈希数组织的set,关键字可以重复*/
无需容器不是使用比较运算符组织元素,而是使用一个哈希函数和关键字类型的==运算符
unordered_map<string, size_t> unmap;
string word;
while (cin >> word)
{
++unmap[word];
}
for (const auto &w: unmap)
{
cout << w.first << " occurs " << w.second << ((w.second > 1) ? "times" : "time") << endl;
}
无序容器在存储上组织为一组桶,每个桶保存零个或多个元素。无序容器使用一个哈希函数将元素映射到桶。
桶接口
bucket_count:正在是用的桶的数目
max_bucket_count:容器能容纳的最多的桶的数量
bucket_size(n):第n个桶中有多少个元素
bucket(k):关键字为k的元素在那个桶中*/
桶迭代
local_iterator:可以用来访问桶中元素的迭代器类型
const_local_iterator:桶迭代器的const版本
begin、end:桶的首、尾后迭代器
cbegin、cend:const类型的
哈希策略
load_factor:每个桶的平均数量,返回float值
c.max_load_factor:c试图维护的平均桶大小,返回float值。c会在需要时添加新的桶,以使得load_factor <= max_load_factor
rehash(n):重组存储,使得bucket_count >= n,且bucket_count > size / max_load_factor
reserve(n):重组存储,使得可以保存n个元素,且不必rehash*/
hash类型:使用hash类型的对象来生成每个元素的哈希值
332

被折叠的 条评论
为什么被折叠?



