boolan——c++学习笔记之STL哈希表探究

来源:互联网 发布:阿里云上海公司地址 编辑:程序博客网 时间:2024/06/01 08:56

一、简介

c++STL容器unordered_set、unordered_map、unordered_multiset、unordered_multimap内部是用哈希表实现的,以下将详细介绍c++STL哈希表的实现。


二、哈希表排列结构

1、哈希表buckets个数大于元素个数,当元素个数大于等于buckets个数时,哈希表将rebuild,扩大buckets个数,GNU C2.9 buckets个数增量表如下图所示,默认为53,增量为质素,大小因编译器不同可能不一样。

2、哈希表中key不能被改变,数据可以更改。

3、哈希命中到同一位置,将以链式存储元素。



三、代码分析

1、GNU C 2.9实现模板hashtable需要传入6个参数,

Value:数据+键值

Key:键值

HashFun:哈希函数,用以返回一个哈希值,再经过运算得到元素存放位置

ExtractKey:从value中提取key

EquelKey:比较key的方式

Alloc:分配器



四、哈希表应用

1、直接运用容器的hashtable,传入相应参数,添加元素到哈希表中。



五、STL容器unordered_set的哈希表应用

1、unordered_set、unordered_map、unordered_multiset、unordered_multimap模板定义,内部均使用了hashtable。


2、unordered_set容器使用。


0 0
原创粉丝点击