您的位置:首页 > 编程语言 > C语言/C++

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

2017-03-15 22:08 316 查看
一、简介

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容器使用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: