首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哈希(unordered_map、unordered_set)

unordered系列关联式容器 内部是无序的,查询很快 几个函数说明: 函数声明 功能介绍 operator[] 返回与key对应的value值 bucket_count() 返回桶的个数 size_t...bucket_size(size_t n)const 返回n号桶有效元素的个数 size_t bucket(const K& key) 返回元素key对应的桶号 底层结构 unordered系列的关联式容器之所以效率比较高...unordered_map和unordered_set封装 hash表(开散列) 几个点: 模板类,第一个模板参数是K,第二个参数T,上层决定这个T是什么 传入仿函数KeyOfT,这个可以从T类型中取K...unordered_map的底层是哈希表,第二个模板参数传个pair,同时要配对应的仿函数,返回first #pragma once #include "hash.h" namespace...st { template > class unordered_map {

37020

【C++】哈希(unordered_set、unordered_map)

unordered_set的使用 unordered_set、unordered_map跟set和map的使用差不多,只是unordered是无序的,且迭代器是单向的。...unordered_map的使用 unordered_map也是无序的。 unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与其对应的value。...在内部,unordered_map没有对按照任何特定的顺序排序, 为了能在常数范围内找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。...unordered_map容器通过key访问单个元素要比map快,但它通常在遍历元素子集的范围迭 代方面效率较低。...底层结构 unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构。

9110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C++】unordered_set 和 unordered_map 使用 | 封装

    使用 unordered_map官方文档 ---- unordered_set 官方文档 ---- set / map与unordered_set / unordered_map 使用功能基本相同,但是两者的底层结构不同...头文件,在其中创建命名空间unordered_set 在unordered_set中实现一个仿函数, unordered_set 的第二个参数 为 K unordered_set作为 K 模型 ,所以...T应传入K ---- 创建 unordered_map.h头文件,在其中创建命名空间unordered_map unordered_map 的第二个参数 为 pair 类型...与unordered_set , 若为unordered_set ,则输出 K类型的K 若为unordered_map ,则输出 KV类型的K ---- hashi++,计算下一个桶的位置,判断是否为空...unordered_map对于 begin和end的复用 在 unordered_map中使用哈希桶中的HashTable的迭代器 来实现unordered_map的迭代器 ---- unordered_map

    31340

    【C++深度探索】unordered_set、unordered_map封装

    ,来对C++STL库中的unordered_set和unordered_map进行模拟实现。...,unordered_map遍历无序 map有双向迭代器,unordered_map单向迭代器 它们之间性能有差异 unordered_map常见接口: 函数声明 功能介绍 unordered_map(...begin 返回unordered_map第一个元素的迭代器 end 返回unordered_map最后一个元素下一个位置的迭代器 cbegin 返回unordered_map第一个元素的const迭代器...✨unordered_set介绍 文档介绍,点击跳转   unordered_set与unordered_map类似,不同在于前者储存单个数据,后者储存键值对,这里就不过多介绍。 2....和unordered_map封装   我们对于unordered_set和unordered_map封装需要各种新开一个头文件unordered_set.h和unordered_map.h来进行,并且都需要包含

    7610

    【C++】unordered_set、unordered_map超详细封装过程,处理底层细节

    前言 上篇文章我们简单地实现了哈希表,本篇文章将基于开散列实现的哈希表封装出unordered_set和unordered_map的基本功能。...本文不再从头实现哈希表,而是着重介绍封装unordered_set、unordered_map中的细节问题,如果小伙伴对哈希表的实现还不太熟悉的话请先阅读上篇文章。...2、迭代器 unordered_set和unordered_map迭代器的实现,是封装unordered_set和unordered_map的重中之重,也是比较复杂的地方。...2.4 unordered_map中[]重载 map中的[]重载是复用的insert函数,主要是利用其返回值,unordered_map也不例外。...我们应该在unordered_set和unordered_map的层面加仿函数的缺省值,这样如果遇到日期类这种特殊类型的需求,我们就可以按需传仿函数完成整型的转换。

    1400

    【C++】unordered_map和unordered_set的使用 及 OJ练习

    本文中只对unordered_map和unordered_set进行介绍, unordered_multimap和unordered_multiset大家可自行查看文档介绍。...2. map、set系列容器和unordered_map、unordered_set系列容器的区别 首先我们来简单说一下前面学的不带unordered的几个容器和这篇文章学习的unordered系列的容器有什么区别.../unordered_multimap、unordered_set/unordered_multiset它们的底层是哈希表,至于什么是哈希表,大家有的可能听说过,有的可能没有,没关系,我们后面会讲。...4. set与unordered_set性能对比 那我这里呢也提供了一段代码,以set和unordered_set为例来测试对比一下它们的性能: 因为unordered系列和非unordered系列它们底层的数据结构都是一样的...思路分析 那这道题其实只用unordered_set也能搞: unordered_set虽然不能排序,但是也是可以去重的,首先我们先对两个数组进行去重。

    28910

    【C++】哈希表封装实现 unordered_map 和 unordered_set

    文章目录 一、unordered 系列关联式容器 1、unordered_map 2、unordered_multimap 3、unordered_set 4、unordered_multiset 二...、哈希表的迭代器 三、哈希表封装实现 unordered_map 和 unorderd_set 四、模拟实现完整代码 1、HashTable.h 2、unordered_map 3、unordered_set...) 3、unordered_set unordered_set 的介绍 unordered_set 和 unordered_map 的区别再于 unordered_set 是 K模型 的容器,而 unordered_map...unordered_set 和 unordered_map 的功能与要求基本一样: unordered_set 的查询效率为 O(1); unordered_set 遍历得到序列的元素顺序是不确定的;...与 unordered_map 为数不多的不同的地方在于,unordered_set 不需要修改 value,所以也就不支持 operator[] 函数; unordered_set 的接口 unordered_set

    1.5K30

    【C++】开散列实现unordered_map与unordered_set的封装

    本文主要介绍unordered_map与unordered_set的封装,此次封装主要用上文所说到的开散列,通过开散列的一些改造来实现unordered_map与unordered_set的封装 一、...模板参数 由于unordered_set 是 K 模型的容器,而 unordered_map 是 KV 模型的容器,所以需要对结点的参数进行改造,unordered_set可以使用,unordered_map...如果是unordered_map容器,那么它传入底层哈希表的模板参数就是Key和Key和Value构成的键值对,如果是unordered_set容器,那么它传入底层哈希表的模板参数就是Key和Key...data去进行比较了 对于unordered_set:data是key是可以比较的,对于unordered_map:data是键值对,我们需要取出键值对的first。...而data既可以是unordered_set的,也可以是unordered_map的,所以我们需要仿函数来实现不同容器所对应的需求,然后传入: unordered_map返回kv.first template

    18320

    C++ map和unordered_map详解

    概述   C++中map和unordered_map提供的是一种键值对容器,在实际开发中会经常用到,它跟Python的字典很类似,所有的数据都是成对出现的,每一对中的第一个值称之为关键字(key),每个关键字只能在...map和unordered_map   map是一种有序的容器,底层是用红黑树实现的(什么是红黑树?)...unordered_map是一种无序的容器,底层是用哈希表实现的(哈希表-维基百科),哈希表最大的优点是把数据的查找和存储时间都大大降低。 直观对比 map unordered_map 优点 1....因此,除了有顺序要求和有单词操作时间要求的场景下用map,其他场景都使用unordered_map。...对象 typedef unordered_map strIntMap; strIntMap map1; strIntMap map2({ {"Tom", 80}, {"Lucy

    2.9K20

    【C++】使用哈希表模拟实现STL中的unordered_set和unordered_map

    前言 前面的文章我们学习了unordered_set和unordered_map的使用以及哈希表,并且我们提到了unordered_set和unordered_map的底层结构其实就是哈希表。...那这篇文章我们就对之前我们实现的哈希表(拉链法实现的那个)进行一个改造,并用它模拟实现一下unordered_set和unordered_map。...增加一个模板参数 2. unordered_set和unordered_map增加KeyOfT仿函数 然后我们把unordered_set/map能写的先写一写: 3. insert封装及测试 那我们先把...insert搞一下,然后测试一下 unordered_map 测试一下: unordered_set的插入 没问题 然后,unordered_map的插入 没问题。...然后end用空构造就行了 6. unordered_set和unordered_map的迭代器封装 那哈希表的迭代器实现好,我们就可以封装unordered_set和unordered_map的迭代器了

    16610
    领券