专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

深度C遍历unorderedmap顺序问题

  说明
  unorderedmap是关联容器,含有带唯一键的键值对。搜索、插入和元素移除拥有平均常数时间复杂度。元素在内部不以任何特定顺序排序,而是组织进桶中。元素放进哪个桶完全依赖于其键的哈希。这允许对单独元素的快速访问,因为一旦计算哈希,则它准确指代元素所放进的桶。问题
  原系统基于GCC4。8。5,使用C11标准开发,内部基于unorderedmap存储数据,新系统先在升级GCC为7。3。0,仍然使用C11标准开发。新旧系统都基于一份持久化文件恢复数据,并按照同一顺序插入unorderedmap,并遍历unorderedmap组包对外发送,通过对比新旧系统对外发包内容一致性,来验证新旧系统的正确性。
  但验证的现象是新旧系统发包顺序不一致。原因分析哈希策略在不同GCC版本中有变化,插入时rehash时机不一样了(primelist不同)
  初始桶的大小不一样,GCC4。8。5有默认值10,之后的版本取消了默认值
  根本原因:初始桶大小和每次插入时桶大小要保持一致解决方案替换GCC7。3。0里的哈希策略为GCC4。8。5的(标准库生成是弱符号,使用stub。cpp强符号替换)stub。cppincludeutilityincludecstddefincludenamespacestd{namespacedetail{externconstunsignedlongprimelist〔〕2561or256481{2ul,3ul,5ul,7ul,11ul,13ul,17ul,19ul,23ul,29ul,31ul,37ul,41ul,43ul,47ul,53ul,59ul,61ul,67ul,71ul,73ul,79ul,83ul,89ul,97ul,103ul,109ul,113ul,127ul,137ul,139ul,149ul,157ul,167ul,179ul,193ul,199ul,211ul,227ul,241ul,257ul,277ul,293ul,313ul,337ul,359ul,383ul,409ul,439ul,467ul,503ul,541ul,577ul,619ul,661ul,709ul,761ul,823ul,887ul,953ul,1031ul,1109ul,1193ul,1289ul,1381ul,1493ul,1613ul,1741ul,1879ul,2029ul,2179ul,2357ul,2549ul,2753ul,2971ul,3209ul,3469ul,3739ul,4027ul,4349ul,4703ul,5087ul,5503ul,5953ul,6427ul,6949ul,7517ul,8123ul,8783ul,9497ul,10273ul,11113ul,12011ul,12983ul,14033ul,15173ul,16411ul,17749ul,19183ul,20753ul,22447ul,24281ul,26267ul,28411ul,30727ul,33223ul,35933ul,38873ul,42043ul,45481ul,49201ul,53201ul,57557ul,62233ul,67307ul,72817ul,78779ul,85229ul,92203ul,99733ul,107897ul,116731ul,126271ul,136607ul,147793ul,159871ul,172933ul,187091ul,202409ul,218971ul,236897ul,256279ul,277261ul,299951ul,324503ul,351061ul,379787ul,410857ul,444487ul,480881ul,520241ul,562841ul,608903ul,658753ul,712697ul,771049ul,834181ul,902483ul,976369ul,1056323ul,1142821ul,1236397ul,1337629ul,1447153ul,1565659ul,1693859ul,1832561ul,1982627ul,2144977ul,2320627ul,2510653ul,2716249ul,2938679ul,3179303ul,3439651ul,3721303ul,4026031ul,4355707ul,4712381ul,5098259ul,5515729ul,5967347ul,6456007ul,6984629ul,7556579ul,8175383ul,8844859ul,9569143ul,10352717ul,11200489ul,12117689ul,13109983ul,14183539ul,15345007ul,16601593ul,17961079ul,19431899ul,21023161ul,22744717ul,24607243ul,26622317ul,28802401ul,31160981ul,33712729ul,36473443ul,39460231ul,42691603ul,46187573ul,49969847ul,54061849ul,58488943ul,63278561ul,68460391ul,74066549ul,80131819ul,86693767ul,93793069ul,101473717ul,109783337ul,118773397ul,128499677ul,139022417ul,150406843ul,162723577ul,176048909ul,190465427ul,206062531ul,222936881ul,241193053ul,260944219ul,282312799ul,305431229ul,330442829ul,357502601ul,386778277ul,418451333ul,452718089ul,489790921ul,529899637ul,573292817ul,620239453ul,671030513ul,725980837ul,785430967ul,849749479ul,919334987ul,994618837ul,1076067617ul,1164186217ul,1259520799ul,1362662261ul,1474249943ul,1594975441ul,1725587117ul,1866894511ul,2019773507ul,2185171673ul,2364114217ul,2557710269ul,2767159799ul,2993761039ul,3238918481ul,3504151727ul,3791104843ul,4101556399ul,4294967291ul,Sentinel,sowedonthavetotesttheresultoflowerbound,or,on64bitmachines,restofthetable。ifSIZEOFLONG!84294967291ulelse6442450933ul,8589934583ul,12884901857ul,17179869143ul,25769803693ul,34359738337ul,51539607367ul,68719476731ul,103079215087ul,137438953447ul,206158430123ul,274877906899ul,412316860387ul,549755813881ul,824633720731ul,1099511627689ul,1649267441579ul,2199023255531ul,3298534883309ul,4398046511093ul,6597069766607ul,8796093022151ul,13194139533241ul,17592186044399ul,26388279066581ul,35184372088777ul,52776558133177ul,70368744177643ul,105553116266399ul,140737488355213ul,211106232532861ul,281474976710597ul,562949953421231ul,1125899906842597ul,2251799813685119ul,4503599627370449ul,9007199254740881ul,18014398509481951ul,36028797018963913ul,72057594037927931ul,144115188075855859ul,288230376151711717ul,576460752303423433ul,1152921504606846883ul,2305843009213693951ul,4611686018427387847ul,9223372036854775783ul,18446744073709551557ul,18446744073709551557ulendif};Defaultvalueforrehashpolicy。Bucketsizeis(usually)thesmallestprimethatkeepstheloadfactorsmallenough。structPrimerehashpolicy{Primerehashpolicy(floatz1。0);floatmaxloadfactor()constnoexcept;Returnabucketsizenosmallerthann。std::sizetMnextbkt(std::sizetn)const;Returnabucketcountappropriatefornelementsstd::sizetMbktforelements(std::sizetn)const;nbktiscurrentbucketcount,neltiscurrentelementcount,andninsisnumberofelementstobeinserted。Doweneedtoincreasebucketcount?Ifso,returnmakepair(true,n),wherenisthenewbucketcount。Ifnot,returnmakepair(false,0)。std::pairbool,std::sizetMneedrehash(std::sizetnbkt,std::sizetnelt,std::sizetnins)const;typedefstd::sizetState;StateMstate()const;voidMreset(Statestate);enum{Snprimessizeof(unsignedlong)!8?256:25648};staticconststd::sizetSgrowthfactor2;floatMmaxloadfactor;mutablestd::sizetMnextresize;};Primerehashpolicy::Primerehashpolicy(floatz):Mmaxloadfactor(z),Mnextresize(0){}floatPrimerehashpolicy::maxloadfactor()constnoexcept{returnMmaxloadfactor;}std::sizetPrimerehashpolicy::Mbktforelements(std::sizetn)const{returnbuiltinceil(n(longdouble)Mmaxloadfactor);}Primerehashpolicy::StatePrimerehashpolicy::Mstate()const{returnMnextresize;}voidPrimerehashpolicy::Mreset(Statestate){Mnextresizestate;}Returnaprimenosmallerthann。std::sizetPrimerehashpolicy::Mnextbkt(std::sizetn)const{Optimizelookupsinvolvingthefirstelementsofprimelist。(usefultospeedup,eg,constructors)staticconstunsignedcharfastbkt〔12〕{2,2,2,3,5,5,7,7,11,11,11,11};if(n11){Mnextresizebuiltinceil(fastbkt〔n〕(longdouble)Mmaxloadfactor);returnfastbkt〔n〕;}constunsignedlongnextbktstd::lowerbound(primelist5,primelistSnprimes,n);Mnextresizebuiltinceil(nextbkt(longdouble)Mmaxloadfactor);returnnextbkt;}Findsthesmallestprimepsuchthatalphapneltnins。Ifpnbkt,returnmakepair(true,p);otherwisereturnmakepair(false,0)。InprinciplethisisntverydifferentfromMbktforelements。Theonlytrickypartisthatwerecachingtheelementcountatwhichweneedtorehash,sowedonthavetodoafloatingpointmultiplyforeveryinsertion。std::pairbool,std::sizetPrimerehashpolicy::Mneedrehash(std::sizetnbkt,std::sizetnelt,std::sizetnins)const{if(neltninsMnextresize){longdoubleminbkts(neltnins)(longdouble)Mmaxloadfactor;if(minbktsnbkt)returnstd::makepair(true,Mnextbkt(std::maxstd::sizet(builtinfloor(minbkts)1,nbktSgrowthfactor)));Mnextresizebuiltinfloor(nbkt(longdouble)Mmaxloadfactor);returnstd::makepair(false,0);}elsereturnstd::makepair(false,0);}}namespacedetail}namespacestd设置GCC7。3。0初始桶大小为10includeiostreamincludestringincludeunorderedmapintmain(){创建三个string的unorderedmap(映射到string)std::unorderedmapstd::string,std::stringu;u。reserve(10);std::coutloadfactor:u。loadfactor()std::endl;std::coutmaxloadfactor:u。maxloadfactor()std::endl;std::coutbucketcount:u。bucketcount()std::endl;std::coutsize:u。size()std::endl;boolwillrehash(u。maxloadfactor()u。bucketcount())(u。size()1);std::coutwillrehash:willrehashstd::endl;for(inti0;i10;i){u。insert({std::tostring(i),std::tostring(i)});}迭代并打印unorderedmap的关键和值for(constauton:u){std::coutKey:〔n。first〕Value:〔n。second〕;}std::coutloadfactor:u。loadfactor()std::endl;std::coutmaxloadfactor:u。maxloadfactor()std::endl;std::coutbucketcount:u。bucketcount()std::endl;std::coutsize:u。size()std::endl;willrehash(u。maxloadfactor()u。bucketcount())(u。size()1);std::coutwillrehash:willrehashstd::endl;return0;}CMakeLists。txtproject(unorderedmap)cmakeminimumrequired(VERSION3。5)addexecutable(theexecutablestub。cppmain。cpp)targetlinklibraries(theexecutableum)验证
  在线验证https:godbolt。orgzx3v36YaKc

年,我们的基因年,我们的基因年,是我们的基因,已成了中国人的性格,厚重善良和气生机勇敢勤劳,有对新事物的欣喜接纳,有对一夜逝去的旧事物老物件,无限的眷恋。年,有丰富的传说,有无尽的遐想憧憬,两个2023年春季迎来一波新机潮,这四款新机值得期待,堪称行业顶尖近期想换手机的朋友不妨再等等,春季即将迎来一波新机潮,款款都有大突破,非常值得期待。realmeGTNeo5realme这款是手机将会搭载骁龙8,搭配LDDPR5UF3。1性能组合魅族20系列配置前瞻将有四款机型,还将运行Flyme10系统关于魅族新机,笔者相信很多人还是比较期待的,就在前段时间的时候,魅族表示这次的新机将会跳过19的命名,直接采用20这个数字进行命名,并表示这款新机将会在2023年的春天发布,而目前以不变应万变TIMBERLANDBENTON工壳系列带你走出舒适圈面对这个充满未知且复杂多变的时代,每个人都处于史无前例的彷徨之中,被忙碌裹挟焦虑前行的我们需要转换固有思路,以不变应万变,用不同的场景与身份探寻生命中的更多可能。Timberlan三分钟讲透经典知柏地黄丸的功能主治及临床应用潮热手倒刺手脚脱皮,怎么办?之前我们提到地黄丸是一个系列,一个大家族,之前的单品文章,我们已经介绍过了六味地黄丸和麦味地黄丸,这次我们来介绍下知柏地黄丸。知柏地黄丸是补益类药物,侧最近5年,广东进步最大的城市是它!中山江门终于服气了在地理经济学中,BayArea(湾区)是一个迷人的词汇,因为它有一种独特的吸引力。数据显示,全球70的人口和GDP集中在距离海岸线100公里内的warterfront(滨海)区域,广东省政府工作报告中的东莞元素,释放这些发展信号1月12日上午9时,广东省十四届人大一次会议开幕。南方记者梳理了2023年广东省政府工作报告中与东莞紧密相关的元素,分析其释放的发展信号。东莞中心城区一过去五年工作回顾报告原文继广15999元LV卖家误标价1599元后被秒拍!得物回应1月6日,来自河南郑州的杨先生在上海识装信息科技有限公司旗下得物App上寄售一个路易威登(LV)的包包,出价时不慎将15999元标成了1599元,且被买家秒拍。1月13日,得物方面回归得分手本色!杰伦格林主动转型?助攻数或缩水,却利好火箭队火箭队会在3天里两次与萨克拉门托国王队交手,这也是两队本赛季的首次碰面。看上去国王队比火箭队强很多,而且火箭队两场比赛皆是客场作战,状态并不好的火箭队,似乎很难在客场赢球。但火箭队石家庄市科技杯全民科技创新大赛获奖名单出炉近日,由石家庄市科学技术局等八家单位主办的石家庄市科技杯全民科技创新大赛决赛答辩评审会成功举办,评审会采取选手线上答辩,专家线下集中评审的方式进行。参赛选手按照顺序依次进行5分钟作中超亚军5年首次3线全损,决赛失去2外援1国脚,25球银靴致歉泰山聚焦中超CBA,独一无二球迷媒体点击右上角关注,不会后悔的足协杯决赛的对阵已经产生,与外界预测不同,并未出现上赛季泰山与海港会师的局面,前者2球轻松战胜申花晋级,但海港却出现意外,
我的长江之歌各位听众朋友,大家好!今天水之物语为您带来的是河海大学研究生仇士鹏的故事。新的一年,士鹏也将迎来新的身份长江设计集团有限公司的一员。让我们一起来听听他的长江之歌。我的长江之歌秋招结蛰伏期打地基,复苏期促增长,火了三年的囤旅游还将继续吗?随着国内防疫政策发生重大调整,沉寂三年的旅游业迎来复苏良机。近日,旅游业的好消息也是接二连三。国家卫生健康委发布公告,将新冠调整为乙类乙管,意味着我国疫情防控进入新阶段。另外,自2马云套现后现身国外,如今已在日本定居半年,他为啥不回国?2022年,马云再次出现是浙商总会上,马云正式卸任浙商总会长。媒体纷纷报道马云的时代结束了。从那以后,基本上没有再出现过关于马云的消息。有人曝出马云已经定居在了日本?那么为什么不回高烧干咳难入睡?官方向市民供应退烧药连花清瘟啦!快戳了解甘肃的小伙伴注意啦,元旦假期期间,无论是外出还是在家,大家都要做好防护,新的一年要健健康康。为了保障甘肃地区新冠患者的用药需求,在甘肃省工信厅的支持下,京东旗下京东健康上线重点药品一周未来商业丨张勇挂帅阿里云,东方甄选披露直播带货一周年数据,嘉实京东REIT正式获批每经记者陈婷王郁彪王紫薇杨昕怡每经编辑刘雪梅每经未来商业智库每周定期分享一周未来商业,围绕电商新消费物流供应链生活服务以及未来商业创新创投领域,以事件短评的形式,洞见未来商业发展趋泰凌微IPO实控人个人债务本息近十亿元,或引发控制权不稳定问题产生蓝牙是一种支持设备短距离通信的无线电技术,能在包括移动电话无线耳机笔记本电脑等众多设备之间进行无线信息交换。蓝牙技术以低成本的近距离无线连接为基础,为固定和移动设备之间的通信环境建恒远科技完成亿元级B轮融资,领跑高端装备国产工业软件黄金赛道继今年6月获得5000万PreB轮融资后,山东恒远智能科技有限公司日前再获资本加持,正式宣布完成亿元级B轮融资。本轮融资由国内一线知名投资机构毅达资本,国资背景股东烟台国丰投资控股总投资14亿元,横沥两个重大项目成功摘牌大项目带动大发展,好服务吸引好企业。12月30日,横沥镇怡合达智能制造供应链华南中心二期项目横发集团半导体产业孵化器成功摘牌。两个项目总投资分别为11亿元和3亿元,将为横沥坚持制造张勇亲自挂帅阿里云,背后透露了什么信号?文社长当腾讯和京东还停留在内部演讲层面,对中高层还只是口头警告时,张勇人狠话不多,直接对阿里巴巴管理层的高层开炮。12月29日,阿里巴巴集团董事会主席兼CEO张勇发出全员邮件,宣布新疆至乌兹别克斯坦再开货运新通道本报乌鲁木齐12月27日电(记者李慧赵明昊)12月26日,两辆满载着太阳能光伏板的货车在阿勒泰海关监管下,驶离新疆塔克什肯口岸,最终将抵达乌兹别克斯坦,全程约4300公里,预计行驶踏雪寻禅,洗涤心灵人人都知道西藏的冬天有不一样的美,就像佛教圣地,圣洁美好,可是你知道甘南的冬天,也一样的美吗?都说,甘南最美的季节是仲夏时节,那时的甘南青山绿草,蓝天白云,鲜花盛开,一切都和幻想中
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网