STL容器之set、map、unordered_set、unordered_map

STL关联式容器:unordered_map和unordered_set 前言 在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 O(logN),即最差情况下需要比较红黑树的高度次,当树中的结点非常多时,查询效率也不理想。 在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对unordered_map和unordered_set进行介绍。 一:unordered_map和unordered_set unordered_map/unordered_s 阅读详情

上一篇:STL容器之vector、list

1、有序集合set

2、有序字典map

3、无序集合unordered_set和无序字典unordered_map 

下一篇:STL容器之string、stack、queue、bitset


1、有序集合set

    set通常是由平衡二叉树实现出来(通常用红黑树实现),在二叉树中,每个节点都有一个父节点和两个子节点,左子树的所有元素都比自己小,右子树的所有元素都比自己大。set的主要优点是,它能很快找出一个具有某特定value的元素,因为它具备对数的复杂度,而对于循序式容器的复杂度是线性的。然而它的一个缺点是,你不能直接改变元素的value,因为那会破坏元素的自动排序。

set<int> s1

set<int> s1(op)

set<int> s2 = s1

set<int> s2(s1)

set<int> s2(beg, end)

set<int> s2(beg, end, op)

set<int> s2(initlist)

set<int> s2 = initlist

s2.~set()

set<int>

set<int, op> 

默认构造函数,建立一个空的set

建立一个空的set,以op作为排序规则

Copy构造函数,为相同类型的另一个set建立一份拷贝,所有元素均被复制

Copy构造函数,为相同类型的另一个set建立一份拷贝,所有元素均被复制

以区间内的元素作为初值,建立一个set

以区间内的元素为初值,以op为排序准则,建立一个set

以初值initlist的元素为初值建立一个set

以初值initlist的元素为初值建立一个set 

销毁所有的元素,释放内存

一个set,以less<>(operator <)为排序准则

一个set,以op为排序准则

s.key_comp()返回“比较准则”
s.value_comp()返回针对value的“比较准则”,和key_comp()相同
s.count(val)返回元素值为val 的元素个数
s.find(val)返回元素值为val 的第一个元素,如果找不到就返回end()
s.lower_bound(val)返回val的第一个可安插位置,就是元素值>=val的第一个元素位置
s.upper_bound(val)返回val的最后一个可安插位置,就是元素值>val的第一个元素位置
s.equal_range(val)返回val可被安插的第一个位置和最后一个位置,就是元素值==val的元素区间
s1.swap(s2)交换s1和s2的数据
swap(s1, s2)交换s1和s2的数据
s.rbegin()返回反向iterator指向的反向迭代的第一个元素
s.rend()返回反向iterator指向的反向迭代最后一个元素的下一个位置
s.crbegin()返回const iterator反向迭代的第一个元素
s.crend()返回const iterator反向迭代的最后一个元素的下一个位置
s.insert(val)安插一个val拷贝,并返回新元素位置
s.insert(pos, val)安插val的拷贝,返回新元素位置,pos是个提示,指出安插动作的查找起点
s.insert(beg, end)将区间内所有元素拷贝到s,无返回值
s.insert(initlist)插入initlist所有元素,无返回值
s.emplace(args...)插入一个以args为初值的元素,并返回新元素位置
s.emplace_hind(pos, args...)插入一个以args为初值的元素,并返回新元素位置,pos是个提示,指出安插动作的查找起点
s.erase(val)移除与val相等的所有元素,返回被移除的元素个数
s.erase(pos)移除iterator位置pos上的元素,无返回值
s.erase(beg, end)移除区间内的所有元素,无返回值

2、有序字典map

    map和set类似,通常由平衡二叉树完成,可以把set看作特殊的map,只不过set的key和value是同一对象。因此,map拥有set的所有能力和所有操作。唯一的区别是map的元素key/value的键值对,此外map可以作为关联式数组来运用。map会根据key自动对元素排序,这一性质使得map身上有一条重要限制:你不可以直接改变元素key,因为这会破坏正确次序,要修改元素的key,必须先移除拥有该key的元素,然后插入拥有新key/value的元素。

map<int> m1

map<int> m1(op)

map<int> m2 = m1

map<int> m2(m1)

map<int> m2(beg, end)

map<int> m2(beg, end, op)

map<int> m2(initlist)

map<int> m2 = initlist

m2.~map()

map<key, val>

map<key, val, op> 

默认构造函数,建立一个空的map

建立一个空的map,以op作为排序规则

Copy构造函数,为相同类型的另一个map建立一份拷贝,所有元素均被复制

Copy构造函数,为相同类型的另一个map建立一份拷贝,所有元素均被复制

以区间内的元素作为初值,建立一个map

以区间内的元素为初值,以op为排序准则,建立一个map

以初值initlist的元素为初值建立一个map

以初值initlist的元素为初值建立一个map

销毁所有的元素,释放内存

一个map,以less<>(operator <)为排序准则

一个map,以op为排序准则

m[key]如果关键字为key的元素不存在,则安插关键字为key的元素,如果不设置value,value默认初始化为0。如果存在则返回value值。
m.at(key)返回key对应的value,如果该元素不存在则抛出异常

for(auto iter = m.begin();iter!=m.end();iter++){

    cout<<iter->first<<endl;

    cout<<iter->second<<endl;

}

遍历map中的所有元素
m.key_comp()返回“比较准则”
m.value_comp()返回针对value的“比较准则”,和key_comp()相同
m.count(val)返回key为val 的元素个数
m.find(val)返回key为val 的第一个元素,如果找不到就返回end()
m.lower_bound(val)返回key=val的第一个可安插位置,就是key>=val的第一个元素位置
m.upper_bound(val)返回key=val的最后一个可安插位置,就是key>val的第一个元素位置
m.equal_range(val)返回key=val可被安插的第一个位置和最后一个位置,就是key==val的元素区间
m1.swap(m2)交换m1和m2的数据
swap(m1, m2)交换m1和m2的数据
m.rbegin()返回反向iterator指向的反向迭代的第一个元素
m.rend()返回反向iterator指向的反向迭代最后一个元素的下一个位置
m.crbegin()返回const iterator反向迭代的第一个元素
m.crend()返回const iterator反向迭代的最后一个元素的下一个位置
m.insert(val)安插一个val拷贝,并返回新元素位置
m.insert(pos, val)安插val的拷贝,返回新元素位置,pos是个提示,指出安插动作的查找起点
m.insert(beg, end)将区间内所有元素拷贝到s,无返回值
m.insert(initlist)插入initlist所有元素,无返回值
m.emplace(args...)插入一个以args为初值的元素,并返回新元素位置
m.emplace_hind(pos, args...)插入一个以args为初值的元素,并返回新元素位置,pos是个提示,指出安插动作的查找起点
m.erase(val)移除与val相等的所有元素,返回被移除的元素个数
m.erase(pos)移除iterator位置pos上的元素,无返回值
m.erase(beg, end)移除区间内的所有元素,无返回值

3、无序集合unordered_set和无序字典unordered_map 

  • 无序容器的底层使用的是hash table,hash table所使用的解决碰撞的办法为拉链法,我们称hash table表格内的元素为桶(bucket),buckets的聚合体,则用vector完成,以便有动态扩充能力。
  • 每个bucket维护一个链表,每个hash code被关联至一个链表中,这个链表时属于单链表还是双链表,取决于实现,C++的标准只保证它们的iterator至少是个forward iterator。因此反向的iterator,包括rbegin()、rend()、crbegin()、crend()都不提供。
  • 使用hash table的优点是,如果拥有良好的hash策略,在安插、删除、查找元素时所用的时间为常量。
  • 使用hash table的容器不提供“直接元素访问的操作”。
  • 你可以指定bucket的最小数量。
  • 你可以(并且有时候必须)提供自己的哈希函数。哈希函数是个函数或者仿函数,它接收一个元素类型的value作为参数,并返回一个size_t的value。因此,bucket的当前数量并未被考虑。将其返回的值映射到合法的bucket索引内,是由容器内部完成的。
  • 你可以(并且有时候必须)提供自己的等价准则,它必须是个判断式。
  • 你可以指定一个最大负载系数(最大负载系数 = 总元素个数 / bucket的个数),一旦超过就会自动rehashing。
  • 你可以强迫rehashing,rehashing指的是重建hash table,即动态扩充bucket vector,并找出下一个新的并且足够大(大约两倍)的质数,检验旧表中的每个元素,计算其在新表中的位置,然后再插入到链表中。

(1)unordered容器的构造函数和析构函数如下:

Unord u默认构造函数,建立一个空的unordered容器
Unord u(bnum)建立一个空的unordered容器,至少使用bnum个bucket
Uord u(bnum, hf, cmp)建立一个空的unordered容器,至少使用bnum个bucket,以hf作为哈希函数cmp作为等价准则
Uord u(u2)复制构造函数,建立u2的拷贝
Uord u = u2复制构造函数,建立u2的拷贝
Uord u(beg, end)建立一个unordered容器,以[beg, end)元素作为初值
Uord u(beg, end, bnum)建立一个unordered容器,以[beg, end)元素作为初值,至少使用bnum个bucket
Uord u(beg, end, bnum, hf)建立一个unordered容器,以[beg, end)元素作为初值,至少使用bnum个bucket,以hf作为哈希函数
Uord u(beg, end, bnum, hf, cmp)建立一个unordered容器,以[beg, end)元素作为初值,至少使用bnum个bucket,以hf作为哈希函数cmp作为等价准则
Uord u(initlist)建立一个unordered容器,以initlist作为初值
Uord u = initlist建立一个unordered容器,以initlist作为初值
u.~Uord()销毁所有元素并释放内存

(2)Unordered容器Uord的所有可能类型如下:

unorderd_set<elem>一个unordered_set,使用默认的哈希函数和默认比较函数
unorderd_set<elem, hash>一个unordered_set,使用hash作为哈希函数,使用默认比较函数
unorderd_set<elem, hash, cmp>一个unordered_set,使用hash作为哈希函数,使用cmp比较函数
unordered_map<key, T>一个unordered_map,使用默认的哈希函数和默认比较函数
unordered_map<key, T, hash>一个unordered_map,使用hash作为哈希函数,使用默认比较函数
unordered_map<key, T, hash, cmp>一个unordered_map,使用hash作为哈希函数,使用cmp比较函数

(3)除了STL容器简介中的公共函数以外,unordered容器的其它函数 

u.hash_function()返回哈希函数
u.key_eq()返回比较函数
u.bucket_count()返回当前的bucket数量
u.bucket(val)返回val被找到的那个bucket编号
u.bucket_size(buckidx)返回第buckidx个bucket所含的元素个数
u.begin(buckidx)返回一个forward iterator,指向第buckidx个bucket中第一个元素
u.end(buckidx)返回一个forward iterator,指向第buckidx个bucket中最后个元素
u.cbegin(buckidx)返回一个const forward iterator,指向第buckidx个bucket中第一个元素
u.cend(buckidx)返回一个const forward iterator,指向第buckidx个bucket中最后个元素
u.max_bucket_count()返回bucket最大可能数量
u.load_factor()返回当前的负载系数
u.max_load_factor()返回当前最大的负载系数
u.max_load_factor(val)设定最大负载系数为val
u.rehash(bnum)将容器rehash,使其bucket个数至少为bnum
u.reserve(num)将容器rehash,使其空间至少可拥有num个元素
u1.swap(u2)交换u1和u2的数据
swap(u1, u2)交换u1和u2的数据
u.rbegin()返回反向iterator指向的反向迭代的第一个元素
u.rend()返回反向iterator指向的反向迭代最后一个元素的下一个位置
u.crbegin()返回const iterator反向迭代的第一个元素
u.crend()返回const iterator反向迭代的最后一个元素的下一个位置
u.insert(val)安插一个val拷贝,并返回新元素位置
u.insert(pos, val)安插val的拷贝,返回新元素位置,pos是个提示,指出安插动作的查找起点
u.insert(beg, end)将区间内所有元素拷贝到u,无返回值
u.insert(initlist)插入initlist所有元素,无返回值
u.emplace(args...)插入一个以args为初值的元素,并返回新元素位置
u.emplace_hind(pos, args...)插入一个以args为初值的元素,并返回新元素位置,pos是个提示,指出安插动作的查找起点
u.erase(val)移除与val相等的所有元素,返回被移除的元素个数
u.erase(pos)移除iterator位置pos上的元素,无返回值
u.erase(beg, end)移除区间内的所有元素,无返回值
u[key]安插一个带着key的元素——如果尚未存在于容器内。返回一个reference指向带着key的元素
u.at(key)返回一个reference指向带着key的元素

参考:《C++标准库》

AIGC实战:用ComfyUI和Lora微调打造专属原神角色(含完整工作流) 本文详细介绍了如何利用ComfyUI和Lora微调技术打造专属原神风格角色,涵盖从环境配置、数据集准备到工作流构建和Lora训练的全过程。通过模块化节点设计和高级控制技术,创作者可实现高度个性化的AIGC艺术创作,提升二次元角色生成的效率与质量。 阅读详情

相关推荐

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1369

Python Unicode 基本知识

Python Unicode 基本知识 本文讨论了 Python 2.x 对 Unicode 的支持,并对人们在使用 Unicode 时常遇到的问题进行了解释。 Unicode 简介 1. 字符编码历史回顾 1968 年,美国信息交换标准码(众所周知的 ASCII 码)被标准化。 ASCII 为各种字符定义了对应的数字代码,这些数字代码的取值范围为

Matthew的博客 2万+

Oracle EBS订单的流程(Order->AR)

基本流程创建订单路径:Order Management > Orders,Returns > Sales Orders填写订单头信息,客户,订单类型,销售人员填写订单体信息,输入物料,数量...然后Book Order,订单Book之后,你会发现订单头的Status的状态变成了“Booked”,订单行的状态为"Awaiting Shipping",记录下来你的订单号,后边的每一步都需要这个订单号。

田攀的日志 4万+

c++ unordered_set详细操作

一、使用前提 引入头文件: #include <unordered_set> 1 二、unordered_set是什么 unordered_set 容器,可直译为“无序 set 容器”。即 unordered_set 容器和 set 容器很像,唯一的区别就在于 s...

qq_40286920的博客 3万+

NXP KW45开发实战:如何在MCUXpresso IDE中正确配置J-Link并解决设备识别问题

本文详细介绍了在MCUXpresso IDE中配置J-Link以支持NXP KW45无线MCU开发的实战指南。从环境准备到J-Link深度配置,再到烧录流程优化和高级调试技巧,帮助开发者高效解决设备识别问题并提升开发效率。特别推荐使用JLinkRemoteServer.exe进行多设备并行调试,并提供了烧录速度优化和低功耗调试的实用技巧。

gray5的博客 864

Unity3D移动平台简单实现

在电子游戏中移动平台可谓是十分常见的,如平台从一处至另一处的来回移动,或当需要玩家触发机关时,平台浮动并按一定的路线移动至目标处。本文主要是在Unity3D引擎下使用少量脚本实现两点之间来回移动平台的最基本功能,是一种比较简单且好理解的移动平台解决方案。 涉及到的点如下: 平台对象的实现 平台移动路线的设定 处于平台上游戏对象(如:玩家)的相对运动 创建平台控制对象 创建平台实...

长溪木可的博客 4683

unordered_set和unordered_map的使用【STL】

unordered_set是存储键值对的关联式容器,其允许通过key值快速的索引到与其对应的value值;键值key通常用于唯一地标识元素,而value值是一个对象,它的内容和键值key关联;unordered_set没有对按照任何特定的顺序排序,为了能在常数范围内找到key所对应的value,unordered_set将相同哈希值的键值对放在相同的桶中;

Man9o 2491

stm32使用TB6600驱动器控制42BYGH型步进电机

stm32使用TB6600驱动器控制42BYGH型步进电机

qq_35653974的博客 9587

set、unordered_set、map、unordered_map的基本用法

特性:①:set中不允许重复的元素,每个元素在集合中是唯一的;②:set中的元素按照严格递增顺序排列;③:set是动态增长的,可以根据需要动态地增长或减少元素的数量;④:set通常基于红黑树(Red-Black Tree)实现,这种数据结构保证了元素的快速查找和插入操作的时间复杂度为对数时间。1. 删除元素i2. 删除从start开始到end()结束的元素3. 删除等于key值的所有元素,返回被删除元素的个数1. 在迭代器i前插入val。

ltt159264的博客 1108

软件各项会议评审意见模版

读梅老师主编的书,觉得评审意见模板很有参考价值和实用价值,帮梅老师安利一波,顺便记一下笔记。 《系统/子系统规格说明》评审意见模板 20XX年XX月XX日,XXX(主管机关)在XXX(会议地点)主持召开了“《XXX(产品名称)系统规格说明》评审会”。参加会议的有XXX机关,XXX院校,XXX研究所共XX名代表(名单见附件1),会议成立了评审组(名单见附件2),听取了XXX(单位)做的《XXXX报告》。经讨论质询,形成评审意见如下: 系统规格说明对系统的研制目标和范围、工作状态、运行方式以及所要满足的能力需

赵星汉同学的博客 1万+

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读)

本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。

weixin_29215815的博客 597

unordered_set基本用法

unordered_setUnodered Set 无序集(unorder sets)是一种不按特定顺序存储唯一元素的容器,允许根据元素的值快速检索单个元素。 在unordered_set中,元素的值同时也是唯一标识它的键。键是不可变的,因此,unordered_set中的元素在容器中不能被修改,但是它们可以被插入和删除。 在内部,unordered_set中的元素并不按照任何特定的顺序排序,而是根据它们的散列值组织到桶中,从而允许根据它们的值直接快速访问单个元素(平均时间复杂度为常数)。 与set容

努力的小白马 2万+

zemax---光学设计基础概念篇(持续更新中)

光学设计相关知识概念

u011699626的博客 1146

C++总结(7):STL无序容器之unordered_set、unordered_map、unordered_multiset、unordered_multimap详解

前两节介绍了STL中的和,本节来介绍一下无序容器。无序容器与关联容器类似,但是关联容器是顺序排序的,而无序容器实现了未排序(哈希)的数据结构。

主要分享嵌入式软件、人工智能部分知识 5万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【C++ STL学习笔记】C++ STL无序关联式容器(unordered_map,unordered_set)

文章目录C++ STL无序容器(哈希容器)是什么?C++ STL无序容器种类C++ STL unordered_map容器用法详解创建C++ unordered_map容器的方法C++ unordered_map容器的成员方法深度剖析C++无序容器的底层实现机制C++ unordered_map迭代器的用法C++ STL unordered_map获取元素的4种方法(超级详细)C++ unordered_map insert()用法精讲C++ STL unordered_map删除元素:erase()和cl

qq_41854911的博客 2286

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【C++篇】无序中的法则:探索 STL之unordered_map 与 unordered_set容器的哈希美学

在高效数据管理的探索中,unordered_map 和 unordered_set 成为 C++ 标准库中的有力工具。通过哈希表实现,它们提供了超快的查找、插入、删除操作,是数据去重、频繁查找以及词频统计等需求的理想选择。本文从基本概念到高级用法,从应用场景到性能分析,深入剖析了这些容器的核心特性,展示了它们如何帮助开发者在效率与简洁之间找到平衡。无论是算法竞赛还是实际开发,掌握 unordered_map 和 unordered_set 都能为你的代码增添新维度的灵活性和速度。

半截诗的博客~ 7397

C++11 STL 关联式容器,map,set ,multimap,multiset ,unordered_map,unordered_set;

本节目标 1.熟练掌握map、multimap、set、multiset的接口以及使用 2. 熟悉关联式容器的底层数据结构 3. 实现二叉搜索树、AVL树、红黑树 4. 模式实现 map、set 关联式容器 VS 序列式容器 序列式:vector、list、deque、forward_list(C++11),他们的底层结构都是 线性序列的数据结构 ,里面存储的是元素本身 关联式:里面存储的是 &...

身在边城 心在编程 411

STL容器在算法竞赛中的常见应用及方法总结STL:queue、priority_queue、set、stack、map、unordered_map、unordered_set

容器底层实现时间复杂度有序性适用场景queue链表/数组O(1)插入删除无BFS, FIFO场景堆O(logn)插入删除部分需要快速获取最大/最小元素stack链表/数组O(1)插入删除无DFS, LIFO场景set红黑树O(logn)查找插入删除有序需要有序且不重复元素的集合map红黑树O(logn)查找插入删除有序需要有序键值对哈希表平均O(1)查找插入删除无序需要快速查找且不关心顺序哈希表平均O(1)查找插入删除无序。

hongjianMa的博客 1562

STL-unordered_set/map关联式容器

本文介绍了STL库中的unordered_set/unordered_map,并介绍了它与其他数据结构的区别

都市隸人的博客 1060

C++ STL容器:关联式容器-哈希表(二)unordered_set,unordered_multiset,unordered_map,unordered_multimap

CC++ STL(Standard Template Library,标准模板库)在C++编程中的重要性不容忽视,STL提供了一系列容器、迭代器、算法和函数对象,这些组件极大地提高了C++程序的开发效率和代码质量。STL 容器 分为 2 大类 , 分别是“序列式容器” 和“关联式容器 ”。序列式容器:每个元素都有固定位置,取决于插入时机和地点,其底层为线性序列的数据结构,里面存储的是元素本身。本文介绍的是关联式容器-哈希表(二)unordered_set,unordered_multiset,unorder

weixin_45068267的博客 1315

C++ STL四大容器深度解析:map/set与unordered_map/unordered_set选型指南

在C++标准模板库中,关联容器是处理键值对和唯一元素集合的核心数据结构。其底层实现原理主要分为两类:基于红黑树的有序容器和基于哈希表的无序容器。红黑树通过自平衡二叉搜索树保证元素有序性,提供稳定的O(log n)操作复杂度;哈希表则通过散列函数实现平均O(1)的快速访问,但牺牲了元素顺序。从技术价值看,有序容器适合需要范围查询、顺序遍历的场景,而无序容器在纯查找密集型任务中性能更优。在工程实践中,选择合适容器需综合考虑数据特性、操作频次和性能要求,例如缓存系统、词频统计等高频查找场景适合哈希表实现,而需要有

weixin_33868027的博客 452

C++第三十九弹---C++ STL中的无序容器:unordered_set与unordered_map使用详解

unordered_set/unordered_map的构造,容量,迭代器,查询,修改操作,桶操作,unordered_map的元素访问

小林熬夜学习编程的博客 2195

C++ STL unordered系列容器详解:从unordered_set到unordered_map

本文围绕C++ STL中的unordered系列容器展开介绍,从unordered_set、unordered_map的基本特点和模板声明入手,进一步分析它们与set、map在Key要求、迭代器特性、遍历顺序以及性能表现上的区别。同时介绍支持重复Key的unordered_multiset和unordered_multimap,帮助读者全面理解无序关联容器的设计特点和适用场景。通过本文学习,可以掌握不同关联式容器之间的选择方法,为后续深入理解哈希表底层实现和STL源码分析打下基础。

沫漓的博客 413

C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set

目录unordered_map/unordered_set# unordered_map/unordered_set与map/set的区别底层哈希桶的改造仿函数Key值的获取方法hash(key)的获取方法迭代器完整代码unordered_set文档介绍代码实现unordered_map文档介绍代码实现 unordered_map/unordered_set C++ STL : 模拟实现STL中的关联式容器map和set 这次实现的unordered_map/unordered_set的具体思路和实现的ma

凌桓丶的博客 1136

C++(标准库):20---STL容器之(无序容器unordered_set、unordered_multiset、unordered_map、unordered_multimap)

待续

董哥的黑板报 4121

【C++】STL容器----unordered_map和unordered_set的使用

unordered_map/unordered_set的使用以及和map/set的差异

2402_84357324的博客 926

【C++】STL进阶-- 哈希结构的关联式容器(unordered_map和unordered_set)

哈希结构,简单来说就是通过设定哈希函数使元素的存储位置与它的关键码之间可以建立一一映射的关系,那么在查找关键码时,可以通过该函数计算结果很快找到该元素的一种方法。因此在哈希表中搜索数据的时间复杂度会被认为是"平均为O(1)的复杂度"。 unordered系列的关联式容器之所以效率比较高,是因为其底层用了哈希结构,想了解的哈希结构的可以移步这篇博客哈希结构–哈希冲突解决方法(闭散列)。下面我就介绍一下unordered系列两个容器的使用。

ly_6699的博客 593
上一篇: STL容器之vector、list
下一篇: STL容器之string、stack、queue、bitset
蓬莱道人
博客等级 码龄11年 766粉丝 274原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值