首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

使用 unordered_map官方文档 ---- unordered_set 官方文档 ---- set / map与unordered_set / unordered_map 使用功能基本相同,但是两者的底层结构不同...在unordered_set中实现一个仿函数, unordered_set 的第二个参数 为 K unordered_set作为 K 模型 ,所以 T应传入K ---- 创建 unordered_map.h...对于 begin和end的复用 在unordered_set中,使用哈希桶中的HashTable的迭代器 来实现unordered_set的迭代器 加入typename 是因为编译器无法识别HashBucket...修改迭代器数据 问题 在unordered_set中,借助 哈希桶中的普通迭代器 实现 unordered_set的普通迭代器 在unordered_set中,借助 哈希桶中的const迭代器 实现...unordered_set的const迭代器 ---- 在STL中,是不允许 unordered_set去 *it 修改数据的 ,但是在自己实现的迭代器中却可以通过 ---- 在STL中将 unordered_set

26540

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

unordered_set 的介绍 unordered_set 和 unordered_map 的区别再于 unordered_set 是 K模型 的容器,而 unordered_map 是 KV模型...unordered_set 和 unordered_map 的功能与要求基本一样: unordered_set 的查询效率为 O(1); unordered_set 遍历得到序列的元素顺序是不确定的;...unordered_set 的底层结构为开散列的哈希表; unordered_set 对 key 的要求是能够转换为整形。...与 unordered_map 为数不多的不同的地方在于,unordered_set 不需要修改 value,所以也就不支持 operator[] 函数; unordered_set 的接口 unordered_set...同时,unordered_set insert 函数的返回值变为 pair 后又会引发普通迭代器赋值给 const 迭代器的问题,所以对于 unordered_set

1.2K30

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

本文中只对unordered_map和unordered_set进行介绍, unordered_multimap和unordered_multiset大家可自行查看文档介绍。...4. set与unordered_set性能对比 那我这里呢也提供了一段代码,以set和unordered_set为例来测试对比一下它们的性能: 因为unordered系列和非unordered系列它们底层的数据结构都是一样的...,先放到一个vector里面,再分别插入到set和一个unordered_set里面,对比它们插入、查找、删除的性能。...那我们今天学的是unordered_set,它不会进行排序,那我们要怎么解决?...思路分析 那这道题其实只用unordered_set也能搞: unordered_set虽然不能排序,但是也是可以去重的,首先我们先对两个数组进行去重。

21110

【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...{ private: buckethash::HashTable _ht; }; 如此就可以实现泛型了,如果是unordered_set...而data既可以是unordered_set的,也可以是unordered_map的,所以我们需要仿函数来实现不同容器所对应的需求,然后传入: unordered_map返回kv.first template

16320

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

,只是 其底层结构不同,他们不再以红黑树作为底层结构,而是以挂哈希桶的哈希表作为底层结构,就是用存储结点指针的vector来实现哈希表,哈希表的每个位置是一个桶,桶结构是一个存储value的单链表,unordered_set...哈希最大的作用就是查找,如果你想进行排序什么的,哈希迭代器遍历的结果是无序的,只有map和set遍历的结果才是有序的,所以哈希并不具有排序的功能,unordered_map和unordered_set仅仅只有去重的功能而已...开散列的哈希表是最常用的方式,库里面的unordered_map和unordered_set用的也是哈希桶的方式实现的,我们模拟实现的哈希桶也仿照库实现,哈希结点node里面存储键值对和下一个结点指针。...但是哈希表的迭代器却没有通过增加模板参数来解决,而是重写了一个struct __hashtable_const_iterator { }类,以这样的方式来实现unordered_map和unordered_set

1.6K30

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

前言 前面的文章我们学习了unordered_set和unordered_map的使用以及哈希表,并且我们提到了unordered_set和unordered_map的底层结构其实就是哈希表。...增加一个模板参数 2. unordered_set和unordered_map增加KeyOfT仿函数 然后我们把unordered_set/map能写的先写一写: 3. insert封装及测试 那我们先把...然后end用空构造就行了 6. unordered_set和unordered_map的迭代器封装 那哈希表的迭代器实现好,我们就可以封装unordered_set和unordered_map的迭代器了...先来unordered_set: 来试一下 报了好多错误。...10. const迭代器的实现及unordered_set元素可以修改问题的解决 还有一个问题就是我们的unordered_set里面的元素现在是可以修改的,但是正常情况key是不能修改的,而且他是哈希函数里面的操作数

12010

C++【哈希表的完善及封装】

已经在上一篇文章中学习过了,闭散列 存在 踩踏 问题,十分影响效率,因此在实践中往往会选择更加优秀的 开散列,哈希表(开散列)又叫做 哈希桶,作为被选中的结构,我们需要对其进行改造,完善哈希桶,使其最终能封装出 unordered_set...、解决 k/v 参数冲突问题 unordered_set 需要 k 的模型,而 unordered_map 需要 k/v 的模型 为了满足 不同 的需求,需要对 哈希表 的模板进行调整,让其既能适应 unordered_set...和 unordered_map 都可以传递各自需要的参数了 unordered_set #pragma once #include "HashTable.hpp" using namespace...和 unordered_map 就算是完成了 ---- 3、性能测试 将自己封装的 unordered_set 与库中的 unordered_set 进行性能对比(Release 模式下) void...TestPerformance() { US::unordered_set myUSet; std::unordered_set stdUSet; srand((size_t

27460

C++拾趣——STL容器的插入、删除、遍历和查找操作性能对比(Windows VirtualStudio)——插入

insert_begin_256_highest         vector的效率要高于除了unordered_set之外的其他关联容器。...结果对比:         deque的性能是最好的,其次是unordered_set(神一般的存在)。         当元素个数比较多时,vector的性能是最差的。        ...除了unordered_set,其他关联容器性能都比非关联容器(除了vector)要差。         当元素个数比较多(大概大于2500)时,set的性能要高于map。...当元素个数比较少(大概小于256)时,有序关联容器的性能比无序(unordered)关联容器要高(除了unordered_set)。 中间插入 元素个数>15000 ?...在关联容器中,只有在头部插入场景下的unordered_set性能极其优异。         当元素个数较多时,set的性能要优于map。

1.7K11

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券