1 / 3
文档名称:

CC++—STL中Map用法.pdf

格式:pdf   大小:185KB   页数:3页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

CC++—STL中Map用法.pdf

上传人:小小布 2022/11/21 文件大小:185 KB

下载得到文件列表

CC++—STL中Map用法.pdf

相关文档

文档介绍

文档介绍:该【CC++—STL中Map用法 】是由【小小布】上传分享,文档一共【3】页,该文档可以免费在线阅读,需要了解更多关于【CC++—STL中Map用法 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。CC++—STL中Map⽤法
C/C++—STL中Map⽤法
Map是什么
Map是STL中的⼀个关联容器,Key–Value的存储形式。每个Key只能对应⼀个Value。具有快速查找,内部实现是⼀个红⿊⼆叉树。特点
可以增加和删除节点对迭代器的影响较⼩,仅可以修改Key对应的Value值。
Map的功能
⾃动建⽴Key-Value的对应,Key和Value可以是任意类型。查找的复杂度为Log(N)(1000条记录最多10次)
快查快删根据Key修改Value
Map的使⽤
需要导⼊头⽂件
#include<map>//STL头⽂
map对象是⼀个模版类,需要关键字和存储对象两个模版参数
std::map<int,std::string>person;
可以对模版进⾏类型定义使其使⽤⽅便
typedefstd::map<int,std::string>MAP_INI_STRING;
MAP_INI_STRINGperson;
Map的构造
Map的构造函数系统提供啦6个,不同的构造函数涉及到内存的分配,可以根据⾃⼰实际的使⽤场景,来选取不同的构造⽅法。最通⽤的构
造函数就是
std::map<int,std::string>mapPerson;
Map常⽤的数据插⼊⽅法
1、insert函数插⼊pair数据
std::map<int,std::string>mapPerson;
(pair<int,string>(1,"Jim"));
2、insert函数插⼊value_type数据
(std::map<int,std::string>::value_type(2,"Tom"));
3、⽤数组⽅式插⼊数据
mapPerson[3]="Jerry";
三种⽅法都是插⼊操作区别:
inster插⼊操作如果key已经存在则不会做任何处理,
数组⽅式插⼊如果Key存在则更新Key对应的Value,如果不存在则添加新的Key–Value
Map数据的遍历
三种最常⽤的遍历⽅法:
1、前向迭代器
std::map<int,std::string>::iteratorit;
std::map<int,std::string>::iteratoritEnd;
it=();
itEnd=();
while(it!=itEnd){
cout<<it->first<<''<<it->second<<endl;
it++;
}
2、反向迭代器
std::map<int,string>::reverse_iteratoriter;
for(iter=();iter!=();iter++)
cout<<iter->first<<""<<iter->second<<endl;
3、数组形式
(std::map<int,std::string>::value_type(1,"Tom"));
mapPerson[2]="Jim";
mapPerson[3]="Jerry";
intnSize=();
for(intn=1;n<=nSize;n++)
qDebug()<<QString::fromStdString(mapPerson[n]);
三种都是遍历,建议使⽤前向迭代器,慎⽤使⽤数组形成(⾓标开始位置谨慎)。
Map中查询元素
1、cout函数存在返回1不存在返回0内部实现是通过find函数
2、find函数可以定位出现的位置,返回数据所在位置的迭代器。
3、使⽤upper_bound函数和lower_bound函数如map中存在key(1,2,3,4),
则lower_bound(2)返回值2,upper_bound(2)返回值3可以根据这两个的返回值是否相等来判断是否存在
Map中删除元素
移除某个元素使⽤erase();
成员⽅法如下:
iteratorerase(iteratorit);//通过⼀个条⽬对象删除
iteratorerase(iteratorfirst,iteratorlast);//删除⼀个范围
size_typeerase(constKey&key);//通过关键字删除
clear();//((),());
注意:如果map⾥⾯存储的是对象指针,在⽤户erase()需要⽤户⼿动的管理内存,erase⽅法只是将对象从Map中移除
Map中的swap⽤法
map中的swap不是⼀个容器中的元素交换,⽽是两个容器所有元素的交换。
注意:map中的erase以及clear,不会⽴马回收内存,map有较为科学的内存回收机制。可以认为clear以及erase的空间,map会在合适
的时间回收。
Map中排序
。。。。。
Map的基本操作函数
begin()返回指向map头部的迭代器
clear()删除所有元素
count()返回指定元素出现的次数
empty()如果map为空则返回true
end()返回指向map末尾的迭代器
equal_range()返回特殊条⽬的迭代器对
erase()删除⼀个元素
find()查找⼀个元素
get_allocator()返回map的配置器
insert()插⼊元素
key_comp()返回⽐较元素key的函数
lower_bound()返回键值>=给定元素的第⼀个位置
max_size()返回可以容纳的最⼤元素个数
rbegin()返回⼀个指向map尾部的逆向迭代器
rend()返回⼀个指向map头部的逆向迭代器
size()返回map中元素的个数
swap()交换两个map
upper_bound()返回键值>给定元素的第⼀个位置
value_comp()返回⽐较元素value的函数

最近更新

写字楼租房协议范本 13页

综合解析内蒙古赤峰二中数学七年级上册整式的.. 22页

流动性风险-中国保监会 26页

精品解析:重庆市兴龙湖中学数学七年级上册整.. 19页

纳维-斯托克斯方程 11页

健康顾问:高血压患者营养搭配规范 9页

隧道工程施工与定额分析 5页

高性能混凝土工艺技术 12页

2024年家居棉品项目发展计划 59页

眼外伤所致的神经眼科疾患 65页

直肠癌MRI分期以及规范化扫描和报告 54页

第四次月考滚动检测卷-重庆市彭水一中数学七年.. 22页

第四次月考滚动检测卷-福建厦门市翔安第一中学.. 20页

第四次月考滚动检测卷-湖南临湘市第二中学数学.. 19页

病历规范书写管理及纠纷预防 68页

第四次月考滚动检测卷-广东广州市第七中学数学.. 21页

中医综合治疗颈肩腰腿痛的健康教育 9页

第四次月考滚动检测卷-内蒙古赤峰二中数学七年.. 20页

特殊药品管理知识 74页

第二次月考滚动检测卷-四川荣县中学数学七年级.. 21页

浅谈护患关系中的沟通技巧 21页

第三次月考滚动检测卷-西安交通大学附属中学分.. 20页

第三次月考滚动检测卷-江西上饶市第二中学数学.. 20页

第三次月考滚动检测卷-安徽合肥市庐江县二中数.. 21页

第三次月考滚动检测卷-四川内江市第六中学数学.. 22页

第一次月考滚动检测卷-重庆市实验中学数学七年.. 20页

普通心理学思维章节 72页

第一次月考滚动检测卷-广东茂名市高州中学数学.. 24页

新华知信行之宫颈癌的预防 43页

持续性肺动脉高压讲义 30页