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

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

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

 

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值