什么是 map?

一、什么是 map?map 容器,又称键值对容器,即该容器的底层是以红黑树变体实现的,是典型的关联式容器。这意味着,map 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。跟任意其它类型容器一样,它能够存放各种类型的对象。
二、容器特性1.存储结构map是由多个节点(二叉树中的红黑树变体)组成的。
2.键值对map是一个键值对序列,即(key,value)——封装在结构体pair中,它提供基于key的快速检索能力,不能在指定位置插入,但支持at(pos)和[]操作。如:map[key]=value;
multimap与map的区别:map中的key只能唯一,每个key只能出现一次;而multimap中同一key可以出现多次。
3.双向迭代器不支持随机访问迭代器,只能从容器中第一个元素或最后一个元素开始遍历容器,直到找到该位置。
三、基本函数实现1,构造函数map();创建一个空mapmap(const map&);复制构造函数map(begin,end);复制[begin,end)区间内的元素,到另一个map中2.map插入pair insert(const t& x); //往容器插入元素,返回pair
在map中插入元素的三种方式:
假设 map mapstu;
一、通过pair的方式插入对象
mapstu.insert( pair(3,小张) );
二、通过pair的方式插入对象
mapstu.inset(make_pair(-1, “校长-1”));
三、通过value_type的方式插入对象
mapstu.insert( map::value_type(1,小李) );
四、通过索引(key)的方式插入值
mapstu[3] = “小刘;
mapstu.at(4) = “小王;
注意:使用key的方式插入,当key存在时会直接修改key对应的值,当key不存在时会新建一个然后插入3.map删除iterator erase(iterator it);删除键值对中迭代器指向元素iterator erase(iterator first,iterator last);删除键值对中[first,last)中元素size_type erase(const key_type& key); 删除指定的元素void clear();清空键值对中所有元素4.查找函数iterator map.find(key); 查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回map.end();
size_type map.count(keyelem); //返回容器中key为keyelem的对组个数。对map来说,要么是0,要么是1。对multimap来说,值可能大于1。
pair map.equal_range(keyelem); //返回容器中key与keyelem相等的上下限的两个迭代器。上限是闭区间,下限是开区间,如[beg,end)。
以上函数返回两个迭代器,而这两个迭代器被封装在pair中。
5.判断函数bool empty() const;判断容器中是否有元素,若无元素,则返回 true;反之,返回 false。6.大小函数int size() const;返回键值对中元素的个数int max_size() const;返回最大可允许的map元素数量值7.其他函数void swap(map&);交换两个同类型容器的数据四、基本用法#include #includeusing namespace std;int main(){ //保存学生学号和姓名 map s; for (int i = 0; i < 10; i++) { string ch = abcdefghij; string name= maye; //注意pair的类型参数,需要和map的一致 s.insert(pair(i,name+ch[i])); } s.insert(make_pair(111, c语言plus)); s.insert(map::value_type(222, 法外狂徒)); s[333] = 顽石; cout << 学号: << << 姓名: << endl; for (map::iterator it = s.begin(); it != s.end(); it++) { cout
到2020年,江苏将创建约50家省级智能制造示范工厂
人工智能与物联网在嵌入式领域的融合
光通信的新革命,光子芯片崛起
利用数据来建设医疗健康综合服务平台
蔚来汽车那么出色但造价高昂 能跑出未来吗?
什么是 map?
乐视手机2评测 千元的价格旗舰的实力
虚拟现实体验视觉不适感 用光场技术改善
扫码接入无需调试的能源物联网数据服务平台
你打算什么时候购买5G手机呢?
智能安防设备在家居中的应用
高铁控制系统是国产吗?100%国产的中国高铁将进入自动驾驶时代
如何用芯片自动化测试设备测试芯片上电和下电功能?
资源党必看,这个小主机可以打造成家用PT下载机!
Firefox 75附带一个新的计划任务 可自动收集遥测数据以帮助Mozilla改进这款浏览器
最高分辨率,NASA发布火星高清全景图
MCS51三字节无符号除法程序(ASM)
基于ESP32的TinyML图像分类摄像头的设计方案
微软Teams 2.0版本升级受挫,三分之二用户拒绝迁移
iPhone4被制成标本售卖 价格千元