- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 关联容器 元素是排序的 插入任何元素,都按相应的排序规则来确定其位置 在查找时具有非常好的性能 通常以平衡二叉树方式实现,插入和检索的时间都是 O(log(N)) * 关联容器 set和multiset set/multiset 头文件 set set 即集合。set中不允许相同元素,multiset中允许存在相同的元素。 用动态数组实现,采用排序的方法保存集合中的数据元素,查找效率很高。 x * 集合容器类set 头文件为set。 set采用动态数组结构实现,STL采用排序的方法保存集合中的数据元素,从而提高了查找效率。 集合中的数据元素无序且不重复。 set没有重载下标运算符“[]”。 multiset容器允许存在相同值的对象,头文件为set。 * 关联容器 map和multimap map/multimap 头文件 map map与set的不同在于map中存放的元素有且仅有两个成员变量,一个名 为first,另一个名为second, map根据first值对元素进行从小到大排序, 并可快速地根据first来检索元素。 map同multimap的不同在于是否允许相同first值的元素。 A B C D 1 2 3 4 * 映像容器类map 头文件为map。 映像容器中的数据元素必须成对出现,也称做字典数组(或关联数组)。STL中定义了成对数据类型的模板类型的结构体pair: templateclass T, class U struct pair{ typedef T first_type; typedef U second_type; T first; U second; pair(); pair(const T x, const U y); }; * map提供对“(key, value)”数对进行有效存取与管理的机制。其中key是作为键出现的,value作为对应于该键的一个具体数据值。要求键key在容器中是唯一的,而其对应的value数据值则可以重复。 重载了下标运算符“[]”,以进行基于key值的存取与插入。 map采用动态数组结构实现, STL采用排序的方法保存集合中的数据元素,从而提高了查找效率。 multimap容器可存在相同关键字的对象,头文件为map。 multimap中没有重载下标运算符“[]”。 map姓名,手机号 contact; contact[张三] contact[Ellen] * 容器适配器 queue 头文件 queue 队列。插入只可以在尾部进行, 删除、检索和修改只允许从头 部进行。先进先出。 * 容器适配器 priority_queue 头文件 queue 优先级队列。最高优先级元素总是第一个出列 * 顺序容器和关联容器中都有的成员函数 begin 返回指向容器中第一个元素的迭代器end 返回指向容器中最后一个元素后面的位置的迭代器 rbegin 返回指向容器中最后一个元素的迭代器rend 返回指向容器中第一个元素前面的位置的迭代器 erase 从容器中删除一个或几个元素clear 从容器中删除所有元素 * 顺序容器的常用成员函数 front :返回容器中第一个元素的引用 back : 返回容器中最后一个元素的引用 push_back : 在容器末尾增加新元素 pop_back : 删除容器末尾的元素 erase :删除迭代器指向的元素(可能会使该迭代器失效),或 删除一个区间,返回被删除元素后面的那个元素的迭代器 * 【例11.8】我国部分省份与面积映射关联容器类演示 typedef mapstring,double,lessstring mappro; // 之间必须有空格 int main(){ int i; string provinces[]={Jiangsu,Zhejiang,Anhui,Henan, Xinjiang}; double areas[]={10.26,10.18,13.96,16.7,166}; mappro mapprovinces; mappro::iterator iter; for(i=0;i5;i++) mapprovinces[provinces[i]]=areas[i]; mapprovinces.insert(mappro::value_type(Guangdong,17.98)); mapprovinces.insert(ma
文档评论(0)