C++标准库关联容器_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c+标准库关联容器1 关联容器定义 存储对象集合的类型,支持通过键的高效拜访。和挨次容器的本质差别在于:挨次容器通过元素在容器中的位置挨次存储和拜访元素,而关联容器却是依赖键。map和是两个基本的关联容器类型,map以键值对的形式组织存储元素,而set仅存储键。 2 pair类型(在utility头文件中定义) a)pair类型的操作: pair t1,t2 创建一个空的pair对象,两个元素类型分离是t1和t2,值初始化; pair t1,t2 p1(v1,v2);创建一个pair对象,具有两个元素v1和v2,类型分离是t1和t2; make_pair(v1,v2);以v1和v2作为值创建一

2、个pair对象,元素类型分离是v1和v2的类型; p1.first;返回值为v1; p1.second;返回值为v2; p1 小于运算遵循字典次序; p1 = p2;假如两个pair对象的first成员和second成员依次相等,则两个pair对象相等; 注:*pair类型属于类模板。 3 关联容器和挨次容器的操作区分 a)共有的操作: c t c t c(c2); c t c(b,e); 关系操作符; c.begin(); c.end(); c.rbegin(); c.rend(); size_type iterator const_iterator reverse_iterator con

3、st_reverse_iterator eree_type 存储两个迭代器差值的有符号整型,可为负数 value_type 对于map,是pair 类型 reference value_type 的同义词 const_reference 等效于 const value_type swap和赋值操作; 和erase操作; 容器大小的操作(除外); b)关联容器不提供的操作: front,push_front,pop_front,back,push_back,pop_back 4 map类型 map类型可理解为关联数组,关联的本质在于元素的值与某个特定的键相关联,而与元素的位置无关。 a)map对

4、象的定义: map k,v 创建一个空的map对象m,其键和值的类型分离为k,v; map k,v m(m2);创建m2的副本m,m必需具有和m2相同的键类型和值类型; map k,v m(b,e);创建一个map对象m,存储迭代器b,e)标志范围内的全部元素的副本,元素类型必需能转换为pair const k,v ; 注:*键类型必需能够定义 操作符。 b)map定义的类型: map k,v :key_type;键的类型 map k,v :mapp_type;元素的类型 map k,v :value_type;pair const map k,v :key_type,map k,v :map

5、ped_type 注:*map迭代器解引用生成pair const map k,v :key_type,map k,v :mapped_type 类型的对象,pair对象的值成员可以修改,但键成员不能修改; 5 map容器的操作 a)添加元素: m.insert(e);e为map的value_type类型的值。假如键e.first不存在,则添加一个值为e.second的值,假如存在,则m不变。该操作返回一个pair类型的对象,包含一个指向新添加元素的map迭代器,以及一个bool值,表示插入是否胜利; m.insert(b,e);将迭代器b和e标示区间内的全部元素插入到m中,所插入的元素必需为

6、m.value_typpe类型,返回vo; m.insert(iter,e);假如m中不存在键e.first,则在m中以iter为起点搜寻新元素的位置并插入,返回一个指向新添加元素的迭代器。 mzhu = 1;在map中查找键为zhu的元素,假如没有,则插入一个新的键值对,键为zhu,值采纳初始化,再将1赋给元素的值; b)查询元素: m.count(k);返回m中k键浮现的次数,返回值只能是0或1; m.(k);假如m中存在键为k的元素,则返回指向该元素的迭代器,否则,返回m.end(); c)删除元素: m.erase(k);删除m中键为k的元素,返回值为所删除元素的个数,只能是0或1,类

7、型为size_type; m.erase(p);删除m中迭代器p所指向的元素,p所指向的元素必需存在,返回void; m.erase(b,e);删除m中由迭代器b,e)标示范围内的元素,b,e)必需是有效范围,返回void。 6 set类型 set容器单单存储键的集合。 a)set容器不支持的操作: set不支持下标操作; 没有定义mapped_type,value_type对应的是key_type,即元素的类型; 与map一样,set容器中的键也必需唯一,而且不能修改。 注:*set容器支持map的大部分的操作。 7 multimap和multiset a)元素的添加删除: insert 操作每次都会添加一个元素; erase 带有一个键参数的该操作将删除拥有该键的全部元素,返回删除的元素个数,而带有一个或一对迭代器参数,则只删除指定的元素,返回void。 b)查找元素: m.count,m.find() m.lower_bound(k) 返回一个指向键不小于k的元素的迭代器; m.upper_bound(k) 返回一个指向键大于k的第一个元素的迭代器; m.equal_range(k) 返回

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论