c++MAP

本文介绍了C++标准库中的map容器,它是一种一对一的关联容器,提供快速查找、插入、删除和修改键值对的能力。map内部使用红黑树实现,保证了数据的有序性,提升了查找效率。
摘要由CSDN通过智能技术生成

mapC++标准库的一个关联容器,是一个模板类。

        它提供一对一(其中第一个可以称为关键字,每个关键字只能在 map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map就是从键( key)到值( value)的映射。因为重载了[ ][ ]运算符,map像是数组的“高级版”。        

        例如可以用一个 map<string, int>month_name 来表示“月份名字到月份编号”的映射,然后用 monthname["July"]=7 这样的方式来赋值。

        这里说下map 内部数据的组织,map 内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map 内部所有的数据都是有序的,后边我们会见识到有序的好处。map 是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响

        如果没有map我们利用结构体数组查找某个键对应的值,就需要遍历整个数组,这样无疑很低效。map的内部实现是一种名为红黑树的数据结构,当我们将不同的键值放入 map,这种数据结构会自动将所有键值变为有序的(按照键key排序)。

因为有序,当我们查找某个值的时候,就无须遍历整个数组,而是可以用二分的方法快速定位。还是以上面的数据为例,我们想要查找4对应的值,查找过程会先找到中间的7,发现74大,因而只在前一半中进行查找,这样每次查找的范围会缩小一半,关于二分的知识,我们会在后续课程中讲解,这里不展开介绍。

map并不是唯一支持从 key 找 value的数据结构,还有一种更快的以空间换时间的方法叫做 hash

map的功能

自动建立 Key - value 的对应。 key 和value 可以是任意你需要的类型。

根据 key值快速查找记录,查找的复杂度基本是 Log(N)Log(N)

1.快速插入 Key −Value记录

2.快速删除记录。

3.根据 Key修改 value记录

4.遍历所有记录。

使用map

定义

map<string,int>  mp;//定义,mp为名称
mp.size()    //返回map的大小
mp.empty()   //判断是否为空
mp.clear()   //清空map
mp.begin()   //返回第一组映射的位置
mp.end()     //返回最后一组映射的下一个位置
mp.count(x)  //返回关键字x是存在映射
mp.erase(it) //删除迭代器it指向的映射
mp.insert({char,int})//新建一组char到int的映射

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值