- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STL之Map
STL之Map
概述
Map是标准关联式容器(associative?container)之一,一个map是一个键值对序列,即(key ,value)对。它提供基于key的快速检索能力,在一个map中key值是唯一的。map提供双向迭代器,即有从前往后的(iterator),也有从后往前的(reverse_iterator)。
map要求能对key进行操作,且保持按key值递增有序,因此map上的迭代器也是递增有序的。如果对于元素并不需要保持有序,可以使用hash_map。
map中key值是唯一的,如果马匹中已存在一个键值对(昵称,密码):(skynet,407574364),而我们还想插入一个键值对(skynet,472687789)则会报错(不是报错,准确的说是,返回插入不成功!)。而我们又的确想这样做,即一个键对应多个值,幸运的是multimap可是实现这个功能。
下面我们用实例来深入介绍map、multimap,主要内容如下:
1、例子引入
2、map中的类型定义
3、map中的迭代器和键值对
4、map中的构造函数与析构函数
5、map中的操作方法
6、再议map的插入操作
7、[]不仅插入
8、multimap
9、总结
1、例子引入
有一个服务器manager维护着接入服务器的client信息,包括clinetId、scanRate、socketAddr等等。我们定义一个结构体保存scanRate、socketAddr信息。如下:
1
2
3
4
5 typedef????int????clientId;
typedef?struct{
????int?scanRate;
????string socketAddr;
}clientInfo; 我们用map保存这些信息:clientId为键key,clientInfo为值。这样我们可以通过clientId快速检索到client的相关信息,我们可以这样定义:
1 mapclientId,clientInfo clientMap; 这样我们定义了一个clientMap,如果我们要定义多个这样的map,需要多次写mapclientId,clientInfo 变量名。为了避免这样情况,我们通常为mapclientId,clientInfo定义个别名,如:
1
2 typedef?mapclientId,clientInfo clientEdp;
clientEdp clientMap; 之后我们就可以像定义clientMap一样定义mapclientId,clientInfo对象,这样的好处还有:如果我们需要修改map的定义,只需要在一处修改即可,避免修改不彻底造成的不一致现象。
我们这就完成了需要的map的定义,如果不定义或没有在它上面的操作的话,就像定义类而没有方法一样,意义不大或毫无意义。幸运的是,STL提供了这些常用操作:排序(注:map是不能也不要排序的,因为map本身已经排好序了)、打印、提取子部分、移除元素、添加元素、查找对象,就像数据库的增删改查操作!现在我们详细介绍这些操作,并逐步引入hash_map、multimap。
2、map中的类型定义
关联数组(associative array)是最有用的用户定义类型之一,经常内置在语言中用于文本处理等。一个关联数组通常也称为map,有时也称字典(dictionary),保存一对值。第一个值称为key、第二个称为映射值mapped-value。
标准map是定义在std命名空间中的一个模板,并表示为map。它首先定义了一组标准类型名字:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 templateclass?Key,class?T,class?Cmp=lesskey,
????class?A=allocatorpairconst?Key,T
class?std::map
{
public:
????//types
????typedef?Key??? key_type;
????typedef?T??? mapped_type;
?
????typedef?pairconst?Key,T??? value_type;
?
????typedef????Cmp??? key_compare;
????typedef?A??? allocator_type;
?
????typedef????typename????A::reference??? reference;
????typedef????typename????A::const_reference??? const_reference;
?
??
您可能关注的文档
最近下载
- 微型顶管技术简介(地箭式工法)(PPT演示).pptx
- 掘进工作面探放水设计[借鉴].pdf VIP
- 成人呼吸支持治疗器械相关压力性损伤的预防(中华护理学会团体标准解读).pptx VIP
- 输变电工程环境保护和水土保持全过程管控培训课件.pptx VIP
- 成人呼吸支持治疗器械相关压力性损伤的预防-2023中华护理学会团体标准.pptx VIP
- 3-12 岁儿童书写运动肌能调和技术规范.pdf VIP
- HXD3D型机车检修作业指导书.doc VIP
- 中草药项目可行性研究报告(模板).docx
- 2025年广东省华医网公需课考题答案—人工智能赋能制造业高质量发展.docx VIP
- 吉林省普通高中化学会考试题及解析_图文 .pdf VIP
原创力文档


文档评论(0)