高级关联结构 --- 哈希表

哈希表根据元素的值,把他们分布到各个簇中。哈希函数是一种关联函数,她把数据项映射到一个簇中,于是哈希表可以在该簇里进行添加,更新和删除数据的操作。与二叉搜索树一样,哈希表也可以用来实现集合和映射。但与二叉搜索树不同的是,哈希表的迭代器不能按元素的大小顺序访问他们。因此,用哈希表实现的集合与映射是无序的关联容器。 STL中没有哈希表类,也没有提供无序关联容器。 12.1 哈希表 哈希表:表中的每个元素都有唯一的键与之对应。这种关联结构的主要特征是哈希函数,她用键作为参数,并返回表中的某项的入口。可以把哈
摘要由CSDN通过智能技术生成

哈希表根据元素的值,把他们分布到各个簇中。哈希函数是一种关联函数,她把数据项映射到一个簇中,于是哈希表可以在该簇里进行添加,更新和删除数据的操作。与二叉搜索树一样,哈希表也可以用来实现集合和映射。但与二叉搜索树不同的是,哈希表的迭代器不能按元素的大小顺序访问他们。因此,用哈希表实现的集合与映射是无序的关联容器。

STL中没有哈希表类,也没有提供无序关联容器。

12.1 哈希表

哈希表:表中的每个元素都有唯一的键与之对应。这种关联结构的主要特征是哈希函数,她用键作为参数,并返回表中的某项的入口。可以把哈希表看做是一个有下标索引的数据序列,就像数组和向量一样。哈稀函数是个定位函数,她用键作为参数,返回表中的索引值。哈希的模型就是数组和向量的内存访问函数。哈希函数提供了另外一种不同的访问方式。她不是直接使用索引值,而是根据键求出一个索引,并用该索引来定位表中的某项数据。

12.2设计哈希函数:实际哈希函数不可能达到不产生冲突,应当能够产生均匀分布的哈希值。这样就可以使哈希表的索引散布在表中,从而尽可能的少发生冲突情况。

我们将哈希容器的声明中用到哈希函数,所以必须要有某种机制把哈希函数和容器类联系起来。C++语法允许一个函数把另外一个函数当做参数来用。这种方法效率很低,更好的途径是把函数当成一个函数对象类型的对象来处理。我们把哈希函数定义成函数对象,并扩充模板的语法,使之可以把函数对象类型作为模板参数,就像我们把普通数据类型传递给模板参数一样。

12.2.1 函数对象:

函数对象也就是类的对象,其行为类似于函数。但与普通函数不同的是,象其他类型的对象一样,可以创建,存储和销毁函数对象&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值