【unordered_map】是STL中的容器之一,不同于普通容器,它的查找速度极快,常用来存储各种经常被检索的数据,因为容器的底层是【哈希表】。除此之外,还可以借助其特殊的性质,解决部分难题。 二、预备知识 在正式学习unordered_map之前,首先要有一些预备知识,否则后面可能看不懂相关操作 关联式容器 在以往的 【STL容器】...
unordered_set<int> us1; // 构造一个int类型的空容器us1.insert(3);us1.insert(3);us1.insert(5);us1.insert(1);us1.insert(7);us1.insert(8);for (auto x: us1){cout << x << endl;} 我们使用unordered_set容器 并且插入多组重复数据 之后使用范围for遍历 达到一个去重的效果 注意 这里和...
【C++如此简单】unordered_map 哈希容器,map 容器中存储的数据是有序的,而unordered_map 容器中是无序的。 以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的...
具体来讲,unordered_map 容器和 map 容器一样,以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。但由于 unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。 值得一提的是,unordered_map 容器在<unorder...
很容易想到,如果哈希表很大、里面却没存几条数据,那么它出现冲突(碰撞)的几率就会很小;反之,如果哈希表已经接近满了,那么每条新加入的数据都会产生碰撞。 哈希表实际所存数据量和哈希表最大容量之间的比值,叫做哈希表的“加载因子”。 加载因子越小,冲突的概率就越低,但浪费大量空间;加载因子越高,冲突概率越大,...
前言 前面我们学习过 红黑树实现map、set的封装 ,而 unordered_set 和 unordered_map 的功能与map和set类似,所不同的是其存储元素是无序的,底层是使用哈希表,所以今天我们就可以利用之前学习过的 哈希表的实现 ,来对C++STL库中的 unordered_set 和 unordered_map 进行模拟实现。1. unordered_...
我们来看一下这几个模板参数 第一个value就决定了哈希表里面每个data里面存的数据类型,第二个参数key就是用来获取单独的键值key,因为unordered_map进行查找这些操作的时候是用key进行散列的,需要比较的话也是用key,但他里面存的是pair。 第三个这个HashFcn就是接收一个仿函数,用来将比如字符串这些类型转换为整型的。
map是一种容器,内部元素由键值对组成,键与值的数据类型可以不同,键的值是唯一的(此处的值不是键值对中的值),用于自动排序数据值,排序方式是根据某种明确、严格的弱排序标准进行的,这种排序标准是由map内部的比较对象(即map::key_comp)指定的。使用时要引入#include <map>。
实现的数据结构 存储空间 查找性能的稳定性 使用场景 1. map map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STl容器),map会以键从小到大的顺序自动排序。 #include<iostram> #include<map> using namespace std; int main() { map<char,int> mp; ...
1. 定义数据结构 闭散列的实现,我们以键值作为存储元素来讲解。 我们采用vector作为底层容器,用vector来存储哈希结点,哈希结点是一个结构体,其中存储键值对和状态值,_state用于标定哈希映射位置为空、存在、删除三种状态。 同时为了判断什么时候进行哈希表的扩容,在hashTable类中多增加了一个无符号整型的_n变量,表示当...