c++关联容器之无序容器

无序容器在存储上组织为一组桶,每个桶保存零个或多个元素。

无序容器使用一个哈希函数将元素映射到桶。

 

unordered_map:用哈希数组织的map

unordered_set:用哈希数组织的set

unordered_multimap:用哈希数组织的map,关键字可以重复

unordered_multiset:用哈希数组织的set,关键字可以重复*/

无需容器不是使用比较运算符组织元素,而是使用一个哈希函数和关键字类型的==运算符

 

unordered_map 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类型的对象来生成每个元素的哈希值

你可能感兴趣的:(c++)