游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

CSTL深入理解关联容器multimap和map及其查找操作

  关联容器map和multimap为了实现接近于logn的查找(二分查找)效率,将一维的数据组织成二维的树型逻辑结构(红黑树做为底层逻辑结构)。由此,为了维护其元素有序结构,其增加元素的成员函数是insert(),而不是序列容器的pushback()或list、deque容器的pushfront()。
  关联容器multimap是一个key与多个value的映射关系。
  关联容器map是一个key与一个value的映射关系。
  因为map一一映射的特性,所以有额外的成员函数at()和重载操作符operator〔〕。
  classification
  functionname
  map
  multimap
  constructor
  map::map
  multimap::multimap
  destructor
  map::map
  multimap::multimap
  memberfunctions
  at
  NA
  begin
  cbegin
  cend
  clear
  count
  crbegin
  crend
  emplace
  emplacehint
  empty
  end
  equalrange
  erase
  find
  getallocator
  insert
  keycomp
  lowerbound
  maxsize
  operator
  operator〔〕
  NA
  rbegin
  rend
  size
  swap
  upperbound
  valuecomp
  nonmemberoverloads
  relationaloperators
  swap
  1multimap的单值查找查找iteratorfind(constkeytypek);constiteratorfind(constkeytypek)const;
  demo:includeiostreamincludemapintmain(){std::multimapchar,intmymm;mymm。insert(std::makepair(x,10));mymm。insert(std::makepair(y,20));mymm。insert(std::makepair(z,30));mymm。insert(std::makepair(z,40));std::multimapchar,int::iteratoritmymm。find(x);mymm。erase(it);mymm。erase(mymm。find(z));printcontent:std::coutelementsinmymm:;std::coutymymm。find(y)second;std::coutzmymm。find(z)second;return0;}Output:elementsinmymm:y20z402multimap的多值查找
  2。1使用成员函数lowerbound()和upperbound()iteratorlowerbound(constkeytypek);constiteratorlowerbound(constkeytypek)const;iteratorupperbound(constkeytypek);constiteratorupperbound(constkeytypek)const;
  demo:includeiostreamincludemapintmain(){std::multimapchar,intmymultimap;std::multimapchar,int::iteratorit,itlow,itup;mymultimap。insert(std::makepair(a,10));mymultimap。insert(std::makepair(b,121));mymultimap。insert(std::makepair(c,1001));mymultimap。insert(std::makepair(c,2002));mymultimap。insert(std::makepair(d,11011));mymultimap。insert(std::makepair(e,44));itlowmymultimap。lowerbound(c);itlowpointstobitupmymultimap。upperbound(c);ituppointstoe(notd)printrange〔itlow,itup):for(ititlow;it!itup;it)std::cout(it)。first(it)。second;getchar();return0;}output:c1001c2002
  2。2使用成员函数equalrange()templateclassForwardIterator,classTpairForwardIterator,ForwardIteratorequalrange(ForwardIteratorfirst,ForwardIteratorlast,constTval){ForwardIteratoritstd::lowerbound(first,last,val);returnstd::makepair(it,std::upperbound(it,last,val));}
  equalrange()返回一对起始位置和终点位置的迭代器(pair类型),可以使用一个迭代器指向返回的pair的first和second。Associativecontainerfunctionequalrange()returnsapaircontainingtheresultsalowerboundandanupperboundoperation。includeiostreamincludemapintmain(){std::multimapchar,intmymm;mymm。insert(std::makepair(x,50));mymm。insert(std::makepair(y,100));mymm。insert(std::makepair(y,150));mymm。insert(std::makepair(y,200));mymm。insert(std::makepair(z,250));mymm。insert(std::makepair(z,300));for(charcx;cz;c){std::coutTherearemymm。count(c)elementswithkeyc:;std::multimapchar,int::iteratorit;for(itmymm。equalrange(c)。first;it!mymm。equalrange(c)。second;it)std::cout(it)。second;std::cout;}getchar();return0;}Output:Thereare1elementswithkeyx:50Thereare3elementswithkeyy:100150200Thereare2elementswithkeyz:250300
  另一种写法:includeiostreamincludemapintmain(){std::multimapchar,intmymm;mymm。insert(std::pairchar,int(a,10));mymm。insert(std::pairchar,int(b,20));mymm。insert(std::pairchar,int(b,30));mymm。insert(std::pairchar,int(b,40));mymm。insert(std::pairchar,int(c,50));mymm。insert(std::pairchar,int(c,60));mymm。insert(std::pairchar,int(d,60));std::coutmymmcontains:;for(charcha;chd;ch){std::pairstd::multimapchar,int::iterator,std::multimapchar,int::iteratorret;retmymm。equalrange(ch);std::coutch;for(std::multimapchar,int::iteratoritret。first;it!ret。second;it)std::coutitsecond;std::cout;}getchar();return0;}output:mymmcontains:a10b203040c5060d603std::map::findcountiteratorfind(constkeytypek);constiteratorfind(constkeytypek)const;sizetypecount(constkeytypek)const;
  demo:includeiostreamincludemapintmain(){std::mapchar,intmymap;std::mapchar,int::iteratorit;mymap〔a〕50;mymap〔b〕100;mymap〔c〕150;mymap〔d〕200;itmymap。find(b);if(it!mymap。end())mymap。erase(it);printcontent:std::coutelementsinmymap:;std::coutamymap。find(a)second;std::coutcmymap。find(c)second;std::coutdmymap。find(d)second;if(mymap。count(e)0)std::coutemymap。find(e)second;elsestd::coutenotexist!;getchar();return0;}output:elementsinmymap:a50c150d200enotexist!4std::map::equalrangepairconstiterator,constiteratorequalrange(constkeytypek)const;pairiterator,iteratorequalrange(constkeytypek);
  demo:includeiostreamincludemapintmain(){std::mapchar,intmymap;mymap〔a〕10;mymap〔b〕20;mymap〔c〕30;std::pairstd::mapchar,int::iterator,std::mapchar,int::iteratorret;retmymap。equalrange(b);std::coutlowerboundpointsto:;std::coutret。firstfirstret。firstsecond;std::coutupperboundpointsto:;std::coutret。secondfirstret。secondsecond;return0;}output:lowerboundpointsto:b20upperboundpointsto:c305std::map::lowerboundupperbounditeratorlowerbound(constkeytypek);constiteratorlowerbound(constkeytypek)const;iteratorupperbound(constkeytypek);constiteratorupperbound(constkeytypek)const;
  demo:includeiostreamincludemapintmain(){std::mapchar,intmymap;std::mapchar,int::iteratoritlow,itup;mymap〔a〕20;mymap〔b〕40;mymap〔c〕60;mymap〔d〕80;mymap〔e〕100;itlowmymap。lowerbound(b);itlowpointstobitupmymap。upperbound(d);ituppointstoe(notd!)mymap。erase(itlow,itup);erases〔itlow,itup)printcontent:for(std::mapchar,int::iteratoritmymap。begin();it!mymap。end();it)std::coutitfirstitsecond;return0;}output:a20e1006std::map::at(C11)
  成员函数at有边界检查,当然也有性能损耗。mappedtypeat(constkeytypek);constmappedtypeat(constkeytypek)const;
  demo:includeiostreamincludestringincludemapintmain(){std::mapstd::string,intmymap{{alpha,0},{beta,0},{gamma,0}};mymap。at(alpha)10;mymap。at(beta)20;mymap。at(gamma)30;for(autox:mymap){std::coutx。first:x。second;}std::coutmymap。at(alpha);std::coutmymap。at(empty);std::coutmymap。at(alpha);return0;}output:alpha:10beta:20gamma:3010terminatecalledafterthrowinganinstanceofstd::outofrangewhat():map::at7std::map::operator〔〕
  重载操作符operator〔〕没有边界检查,当然也就避免了性能损耗。mappedtypeoperator〔〕(constkeytypek);
  demo:includeiostreamincludestringincludemapintmain(){std::mapstd::string,intmymap{{alpha,0},{beta,0},{gamma,0}};mymap〔alpha〕10;mymap〔beta〕20;mymap〔gamma〕30;for(autox:mymap){std::coutx。first:x。second;}std::coutmymap〔alpha〕;std::coutmymap〔empty〕;0return0;}output:alpha:10beta:20gamma:30100
  ref
  http:www。cplusplus。comreferencemapmultimapcount
  http:www。cplusplus。comreferencemapmultimapequalrange

主播有新人天赋与努力并存积极备考型选手获导师赞赏主播有新人,未来看我们,由东方卫视、百视TV联合出品的主播新人选拔成长综艺《主播有新人》第八期于本周四晚22:00播出。本期新闻赛道复赛下半场号角吹响,选手们实力冲刺5张半决赛……林峯张馨月妻子的浪漫旅行首播雪地拥吻上演甜蜜爱情《妻子的浪漫旅行》第五季开播啦,4月7日起每周三中午12:00于芒果tv浪漫上线。本季嘉宾有林峯张馨月、王新军秦海璐、陈建斌蒋勤勤、邹凯周捷等四对夫妻。此次嘉宾阵容中林峯携手妻……刘恺威再登经典咏流传献唱将军引致敬英雄昨晚,刘恺威亮相最新一期《经典咏流传》节目现场,以一首摇滚风格的《将军引》致敬西汉名将‘飞将军’李广。现场刘恺威讲述了李广的故事,也用歌声再现其磅礴的英雄气势,游刃有余的唱功和……华晨宇王牌对王牌6回归喜剧人身份模仿到位舞台王炸获赞不断从第四季成为《王牌对王牌》的常驻嘉宾起始,到第六季在综艺舞台上游刃有余地为大家带来欢笑,华晨宇三季以来的成长有目共睹。从综艺小白逐渐变身笑点输出,张弛有度的华晨宇造型百变,CO……邓泽鸣青你3二公偷偷甜化人心凭实力和性格圈粉爱奇艺青年励志综艺《青春有你3》正在热播中,第二次公演正如火如荼的进行。慈文传媒训练生邓泽鸣担任中心位带领《偷偷》B组获得小组对决胜利。邓泽鸣《偷偷》上演心动狙击,认真暖……主播有新人现场状况百出选手反应超快绝绝子主播有新人,未来看我们,由东方卫视、百视TV联合出品的主播新人选拔成长综艺《主播有新人》第六期于本周四晚20:20播出。本期复赛大幕正式拉开,综艺赛道选手率先登场,1V1对决火……妹妹有哥在温情短片上线用兄妹陪伴传递亲情的治愈力量从儿时的玩伴我爱哥哥、哥哥是我的超人,到中年互为依仗对方有事第一概念一定要帮再到老年的回望哥哥是我的兄长,是我的老师,同时也像父亲一样、哥哥就是娘家,尽管不同兄妹相处方式大相径……青春有你3二公竞演结束王南钧李钦实力备受瞩目由爱奇艺出品的青年励志综艺节目《青春有你第三季》于本周结束第二轮舞台公演,百位训练生以不断进步的唱跳功力为观众带来风格不一的精彩演出。来自黑金的四位训练生也给众人留下深刻印象:……周柯宇创4第一次公演Radio舞台炸裂获全场撑腰王大型综艺选秀节目腾讯视频《创造营2021》第一次公演于上周六结束了全部舞台的播出。愈发激烈的赛程中,学员的排名也实时发生着变化。来自嘉行新悦的学员周柯宇排名依旧保持在撑腰榜前列……主播有新人选手主持风格惹关注网友热议学历话题主播有新人,未来看我们,由东方卫视、百视TV联合出品的主播新人选拔成长综艺《主播有新人》第四期于本周四晚播出。本期节目中,四位风格迥异却辨识度极高的选手齐齐上台,用专业与态度逐……美团闪购北京商超备货量增长5倍,4天完成近百万个民生物资订单新京报讯(记者秦胜南)近日北京疫情防控形势复杂,生活必需品供应情况备受关注。4月26日,据美团方面消息,美团闪购协同物美、京客隆、家乐福、永辉等多家商超,提升备货量5倍以上,并……汪东城亮相追光吧!哥哥发布会现场征婚追星忙不停11月29日,优酷联合东方卫视、灿星制作重磅打造的国内首档混龄男团竞演真人秀《追光吧!哥哥》在无锡举行新闻发布会,教导主任金星带领21位哥哥,首次全阵容亮相。因飞轮海组合、《恶……
瞿颖李亚鹏为什么分手被插足横刀夺爱是真的吗瞿颖和李亚鹏当年的感情那么好,到最后他们俩为什么分的手大家知道吗?李亚鹏虽说现在已经退圈了,可他人虽不在娱乐圈,娱乐圈却依然有关于他的传说,尤其是感情方面的,谁让李亚鹏出道后与……侯天旭余艺两人关系优衣库里面提到的两个人侯天旭,余艺的名字能够跟众多明星并列在一起出现在网络上,那是因为他们两位在三里屯的优衣库试衣间里面做了一件让数以万记的网友们都瞠目结舌的事情:当时有人在这个地方的试衣间里面做运……183club为什么会解散谁是事件的导火索台湾曾经著名的组合183club。在台湾和内地迅速的走红。不管是组合出的音乐转接,还是成员们一起演出的偶像剧。在零几年的时候是相当火爆的。不过这个组合的发展并没有维持几年。组合……国家要开始收拾刘强东?外有舆论内有施压扛不住了刘强东之前是京东网店的大老板,他生活在媒体的聚光灯下,无数的眼睛都盯着他的一举一动,他和明星的生活其实差不多的,最近你有没有发现刘强东前后已经卸任了几十家企业高层的职务,不少网……李明霖结婚了吗自己说在35岁之前一定要结婚不少的人其实都比较喜欢长得帅的明星,但是了这是任何人的都喜欢美丽的事物的本质,所以李明霖一出道就非常的受欢迎了,很多人都感觉李明霖长得真的是很帅气的,有不少的人还说李明霖其实是……家用中央空调如何清洗,需要注意些什么?中央空调有多种机型的,一般分为家用中央空调,商用中央空调,集中式中央空调,大型冷水机等,下面我们就说说家用中央空调的清洗方法。家用中央空调分为风管机,多联机二种,着重就说……Linux指令学习3自己学习总结文档,有些乱勿怪注意linux指令的大小写1、tar,tar将压缩和解压缩集合在一起,使用不同的参数即可,命令格式如下:tar〔参数〕〔压缩……瞿颖挂历事件照片早年走红的象征如今反被嘲讽瞿颖挂历事件的照片现在还有吗?现在的年轻人别说知道这件事情了,恐怕连瞿颖是谁都不知道吧,说起来最开始瞿颖也是非常火的模特明星,挂历事件在那个年代本来是走红的象征,没想到如今却被……王力宏为什么叫二哥,王力宏二哥的由来在娱乐圈中有不少明星有外号,成龙大哥是因为他的作品成就和为中国文艺界做出的贡献,二姐张歆艺的因自身比较二,又大大咧咧和有点糊涂。可华语乐坛才子王力宏有个外号叫二哥,这是怎么回事……章泽天父亲是南京首富不依附刘强东依然是个出色的女人当年奶茶妹妹章泽天和京东掌门人刘强东恋情曝光的时候,很多人因为他们巨大的年轻差而惊讶。不少人认为章泽天之所以选择和大自己那么多的刘强东在一起,最主要是因为刘强东是在商场上是个身……给力!中国银行宣布10万亿元支持各地产业链延链补链河北资本近日,中国银行发布了《支持产业链供应链现代化水平提升的十五条措施》,旨在支持重点产业集群延链补链强链固链,未来五年为供应链核心企业提供超过10万亿元的流动性支持,……重庆红衣小男孩事件破案了吗11年都没有破案之后更难了虽然如今的科技水平在不断的发展,但是有很多事情终究还是无法给出答案的,比如说之前的一些看起来非常悬疑的案件,至今也没有办法找到所谓的真正的答案,比如说醉卧著名的重庆红衣小男孩的……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网