C++ map hash , [] 和 find的区别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

map  和  hashmap  在使用上需要注意  [] 和 find的区别,数据不存在时 [] 会开辟内存 而find 不会。这个特性很重要。

这个特性很重要,假如一个map当前size是1,使用[]访问一个不存在的key时,你再去取size,发现 size变成2 了,就是这么叼。***

再假如,高并发多线程程序访问map 或 hash 的时候,为了提高性能使用读写锁,如果你再读锁里面使用[] 访问一个不存在的数据时,那就有可能崩溃了。******

C++STL之unordered_map的简单使用_unordered_map<int, std string>内部使用key值拼接 unordered_map 容器 map 容器仅有一点不同,即 map 容器中存储的数据是有序的,而 unordered_map 容器中是无序的。以键值对(pair类型)的形式存储数据,存储的各个键值对的键互不相同且不允许被修改。unordered_map 容器底层采用的是哈希表存储结构,该结构本身不具有对数据的排序功能,所以此容器内部不会自行对存储的键值对进行排序。unordered_map容器通过其键值访问单个元素的速度要比map容器快。做图的题的时候可以用这个来保存邻接表。 阅读详情

相关推荐

HashMap链表的查找效率比较

工程(VS2013)主要构造了HashMaplist集合,通过查找集合中的元素对两者的效率进行比较

C++ maphashmap用法

1,map简介 map是STL的一个关联容器,它提供一对一的hash。 第一个可以称为关键字(key),每个关键字只能在map中出现一次; 第二个可能称为该关键字的值(value); map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在map内...

qq_33216029的博客 7万+

C++11 unordered_mapmap(插入,遍历,Find)效率对比。

之前写过一篇:C++98 使用无序map C++98 使用无序map vs2017 Release X64环境下: 执行一千万次的时间下图所示: 第一组数据: 可以看出有序map执行插入所需时间比较短,约快2.3倍, 第二组数据: 遍历时间基本一致, 第三组数据: 无序map Find一千万次所需时间却快了约20倍。 上图是执行一百万次结果。 插入无序map慢了一倍, 但Find快。 上图是执行十万次结果。 时间上来看相差无几。 代码在这里 综上来看: 在有大量插入操作,Find不那么多的时候,优先

baidu_33308136的博客 4034

c++ hash_map用法总结

c++ STL库里有自定义的hash_map 方法,但是使用起来并不是那么方便 hash_map主要的方法有 find(),insert() 我结合官方API说明一下他们的用法 一、需要特别注意的地方, 1.头文件的引用 2.如何插入一个键值对(参考一下代码) 3.find()的返回值 4.如何获取某一个key值相应的value值 hm1_RcIter -> sec

qq632544991p的专栏 1万+

C++ STL中哈希表 hash_map从头到尾详细介绍

0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储查找功能。例如,我要记录一个人名相应的存储,而且随时增加,要快速查找修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信

susandebug 7万+

c++ map取值的find、[]、at方法特性对比

项目中经常需要对std::map进行插入取值操作,以前经常使用find[]直接操作,c++11引入了at方法。另外,如果仅是判断元素是否存在,也可以使用count,因为map不存在重复的key,所以它的效率也可以。数组的取值操作一样,使用中括号,由于使用简单(能少打几下键盘),很多人喜欢直接用。但如果使用错误,调试bug的时候要多打一万倍的键盘([/捂脸])。c11引入的at方法,用于取值,但它是进行越界检测,这会损失效率。如果存在,则返回它的值,如果不存在,则抛出异常。...

m0_67401920的博客 1830

C++学习记录(18)unordered_mapunordered_set使用

按照类似英语语法的分析角度,setunordered_set都属于set,mapunordered_map都属于map区别就仅仅是加个定语,order意味着命令,在这里是次序的意思,un-否定前缀,意为无序的。我们这次学习的确实相当于无序的意思,因为setmap底层我们也大致了解设计过了,底层用的红黑树,设置结构的时候左子树一定比根小,右子树一定比根大;并且迭代器设计的逻辑是按照中序遍历的顺序,这样的话其实也就是有序的序列。

2401_85751795的博客 1023

C++哈希表unordered_mapmap

在刷剑指offer第50题面试题(第一个只出现一次的字符)的时候用到了哈希表。一开始不太懂,借此机会整理一下,加深理解。 1.mapunordered_map区别 (1)头文件不同 map: #include<map> unordered_map: #include<unordered_map> (2)内部机理不同 mapmap内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的

wangmj_hdu的博客 658

map用法

一、vector vector可理解为变长数组,它的内部实现基于倍增思想。vector支持随机访问,即对于任意的下标0 <= i <n,可以像数组一样用【i】取值。但它不是链表,不支持任意位置O(1)插入。为了保证效率,元素的增删一般应该在末尾进行。 代码: ...

Tizzi的博客 989

【unordered_setunordered_map】—— 我与C++的不解之缘(二十七)

unordered_setunordered_map

LH__1314的博客 4916

C++的stl库之容器(5)mapmultmap

文章目录六,map容器1,简述 六,map容器 1,简述

weixin_50605950的博客 1280

unordered_set/map(哈希表)干货归纳+用法详解

C++哈希表(hash table)是一种数据结构,用于存储查找键值对。它是由一个哈希函数一个数组组成的。哈希函数将键映射到数组中的一个位置,这个位置就是键值对应的索引。

lzq8090的博客 6373

STL之map与pair常用函数详解

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

2401_84875412的博客 1118

c++刷题-哈希表(unorderer_mapunorderer_set)

c++刷题-哈希表(unorderer_mapunorderer_set)一、unorderer_map二、unorderer_set三、setmap区别 一、unorderer_map 简单来说,就是一个无序哈希表,时间复杂度O(1), 两个常用方法: count()返回要查找的key在map的所有key中的出现次数。因为此容器不允许重复,故count()只可能返回 1 或 0,即可判断此key是否存在。有返回1,无返回0。 unordered_map也有find方法,得到的对象是一个iterato

weixin_45837120的博客 823

servlet多重映射_[转载]映射多重映射

映射多重映射(map multimap):#include映射多重映射基于某一类型Key的键集的存在,提供对T类型的数据进行快速高效的检索。对map而言,键只是指存储在容器中的某一成员。Map不支持副本键,multimap支持副本键。Mapmultimap对象包涵了键各个键有关的值,键值的数据类型是不相同的,这与set不同。set中的keyvalue是Key类型的,而map中的ke...

weixin_39610956的博客 180

关于STL的map的注意事项

关于map是什么,这里就不多叙述了。 直接正题,常用的map插入操作有三种方法:通过pair<key_type,value_type>、通过value_type插入数据、还有一种类似于数组的形式插入数据,关键字就是数组下标。 关于三种插入方式的区别:前两者的效果是一样的,但是由于数据集合唯一性,如果一个key对应的value上有值的话,那么再次往这个key上插入一个...

weixin_30482181的博客 187

C++ 面试高频:STL 容器 vector、map、unordered_map 总结】

本文主要总结 C++ 面试中常见的 STL 容器 `vector`、`map` `unordered_map`,结合代码示例分析它们的基本用法、底层结构、时间复杂度、使用场景以及常见面试问题,帮助初学者快速理解并掌握 STL 高频考点。

qq_64148519的博客 298
上一篇: new对象数组的时候怎么设置构造函数参数
下一篇: make接收宏定义参数
ChenHui246
博客等级 码龄14年 6粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值