autodoc.xml 1.1 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127
  1. <?xml version="1.0" standalone="yes"?>
  2. <library-reference id="boost_container_header_reference"><title>Boost.Container Header Reference</title><header name="boost/container/adaptive_pool.hpp">
  3. <namespace name="boost">
  4. <namespace name="container">
  5. <class name="adaptive_pool"><template>
  6. <template-type-parameter name="T"/>
  7. <template-nontype-parameter name="NodesPerBlock"><type>std::size_t</type><default>ADP_nodes_per_block</default></template-nontype-parameter>
  8. <template-nontype-parameter name="MaxFreeBlocks"><type>std::size_t</type><default>ADP_max_free_blocks</default></template-nontype-parameter>
  9. <template-nontype-parameter name="OverheadPercent"><type>std::size_t</type><default>ADP_overhead_percent</default></template-nontype-parameter>
  10. </template><description><para>An STL node allocator that uses a modified DLMalloc as memory source.</para><para>This node allocator shares a segregated storage between all instances of <classname alt="boost::container::adaptive_pool">adaptive_pool</classname> with equal sizeof(T).</para><para>NodesPerBlock is the number of nodes allocated at once when the allocator needs runs out of nodes. MaxFreeBlocks is the maximum number of totally free blocks that the adaptive node pool will hold. The rest of the totally free blocks will be deallocated to the memory manager.</para><para>OverheadPercent is the (approximated) maximum size overhead (1-20%) of the allocator: (memory usable for nodes / total memory allocated from the memory allocator) </para></description><struct name="rebind"><template>
  11. <template-type-parameter name="T2"/>
  12. </template><description><para>Obtains <classname alt="boost::container::adaptive_pool">adaptive_pool</classname> from <classname alt="boost::container::adaptive_pool">adaptive_pool</classname> </para></description><typedef name="other"><type><classname>adaptive_pool</classname>&lt; T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent &gt;</type></typedef>
  13. </struct><typedef name="allocation_type"><description><para>If Version is 1, the allocator is a STL conforming allocator. If Version is 2, the allocator offers advanced expand in place and burst allocation capabilities. </para></description><type>unsigned int</type></typedef>
  14. <typedef name="self_t"><type><classname>adaptive_pool</classname>&lt; T, NodesPerBlock, MaxFreeBlocks, OverheadPercent &gt;</type></typedef>
  15. <typedef name="value_type"><type>T</type></typedef>
  16. <typedef name="pointer"><type>T *</type></typedef>
  17. <typedef name="const_pointer"><type>const T *</type></typedef>
  18. <typedef name="reference"><type>::boost::container::dtl::unvoid_ref&lt; T &gt;::type</type></typedef>
  19. <typedef name="const_reference"><type>::boost::container::dtl::unvoid_ref&lt; const T &gt;::type</type></typedef>
  20. <typedef name="size_type"><type>std::size_t</type></typedef>
  21. <typedef name="difference_type"><type>std::ptrdiff_t</type></typedef>
  22. <typedef name="version"><type>boost::container::dtl::version_type&lt; <classname>self_t</classname>, Version &gt;</type></typedef>
  23. <data-member name="nodes_per_block" specifiers="static"><type>const std::size_t</type></data-member>
  24. <data-member name="max_free_blocks" specifiers="static"><type>const std::size_t</type></data-member>
  25. <data-member name="overhead_percent" specifiers="static"><type>const std::size_t</type></data-member>
  26. <data-member name="real_nodes_per_block" specifiers="static"><type>const std::size_t</type></data-member>
  27. <method-group name="public member functions">
  28. <method name="BOOST_CONTAINER_DOCIGN"><type/><parameter name=""><paramtype>BOOST_STATIC_ASSERT((Version&lt;=2))</paramtype></parameter></method>
  29. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para>Returns the number of elements that could be allocated. Never throws </para></description></method>
  30. <method name="allocate"><type>pointer</type><parameter name="count"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype>const void *</paramtype><default>0</default></parameter><description><para>Allocate memory for an array of count elements. Throws std::bad_alloc if there is no enough memory </para></description></method>
  31. <method name="deallocate" cv="noexcept"><type>void</type><parameter name="ptr"><paramtype>const pointer &amp;</paramtype></parameter><parameter name="count"><paramtype>size_type</paramtype></parameter><description><para>Deallocate allocated memory. Never throws </para></description></method>
  32. <method name="allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>size_type</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse"><paramtype>pointer &amp;</paramtype></parameter></method>
  33. <method name="size" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Returns maximum the number of objects the previously allocated memory pointed by p can hold. </para></description></method>
  34. <method name="allocate_one"><type>pointer</type><description><para>Allocates just one object. Memory allocated with this function must be deallocated only with deallocate_one(). Throws bad_alloc if there is no enough memory </para></description></method>
  35. <method name="allocate_individual"><type>void</type><parameter name="num_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size == 1. Elements must be individually deallocated with deallocate_one() </para></description></method>
  36. <method name="deallocate_one" cv="noexcept"><type>void</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Deallocates memory previously allocated with allocate_one(). You should never use deallocate_one to deallocate memory allocated with other functions different from allocate_one(). Never throws </para></description></method>
  37. <method name="deallocate_individual" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter></method>
  38. <method name="allocate_many"><type>void</type><parameter name="elem_size"><paramtype>size_type</paramtype></parameter><parameter name="n_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size elem_size. Elements must be individually deallocated with deallocate() </para></description></method>
  39. <method name="allocate_many"><type>void</type><parameter name="elem_sizes"><paramtype>const size_type *</paramtype></parameter><parameter name="n_elements"><paramtype>size_type</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates n_elements elements, each one of size elem_sizes[i] Elements must be individually deallocated with deallocate() </para></description></method>
  40. <method name="deallocate_many" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter></method>
  41. </method-group>
  42. <constructor cv="noexcept"><purpose>Default constructor. </purpose></constructor>
  43. <constructor cv="noexcept"><parameter name=""><paramtype>const <classname>adaptive_pool</classname> &amp;</paramtype></parameter><purpose>Copy constructor from other <classname alt="boost::container::adaptive_pool">adaptive_pool</classname>. </purpose></constructor>
  44. <constructor cv="noexcept"><template>
  45. <template-type-parameter name="T2"/>
  46. </template><parameter name=""><paramtype>const <classname>adaptive_pool</classname>&lt; T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)&gt; &amp;</paramtype></parameter><purpose>Copy constructor from related <classname alt="boost::container::adaptive_pool">adaptive_pool</classname>. </purpose></constructor>
  47. <destructor><purpose>Destructor. </purpose></destructor>
  48. <method-group name="public static functions">
  49. <method name="deallocate_free_blocks" cv="noexcept" specifiers="static"><type>void</type><purpose>Deallocates all free blocks of the pool. </purpose></method>
  50. </method-group>
  51. <method-group name="friend functions">
  52. <method name="swap" cv="noexcept"><type>friend void</type><parameter name=""><paramtype><classname>adaptive_pool</classname> &amp;</paramtype></parameter><parameter name=""><paramtype><classname>adaptive_pool</classname> &amp;</paramtype></parameter><description><para>Swaps allocators. Does not throw. If each allocator is placed in a different memory segment, the result is undefined. </para></description></method>
  53. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>adaptive_pool</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>adaptive_pool</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to true, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  54. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>adaptive_pool</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>adaptive_pool</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  55. </method-group>
  56. <method-group name="private member functions">
  57. <method name="priv_allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>std::size_t</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse_ptr"><paramtype>pointer &amp;</paramtype></parameter></method>
  58. </method-group>
  59. </class><class name="private_adaptive_pool"><template>
  60. <template-type-parameter name="T"/>
  61. <template-nontype-parameter name="NodesPerBlock"><type>std::size_t</type><default>ADP_nodes_per_block</default></template-nontype-parameter>
  62. <template-nontype-parameter name="MaxFreeBlocks"><type>std::size_t</type><default>ADP_max_free_blocks</default></template-nontype-parameter>
  63. <template-nontype-parameter name="OverheadPercent"><type>std::size_t</type><default>ADP_overhead_percent</default></template-nontype-parameter>
  64. <template-nontype-parameter name="Version"><type>unsigned</type><default>2</default></template-nontype-parameter>
  65. </template><struct name="rebind"><template>
  66. <template-type-parameter name="T2"/>
  67. </template><description><para>Obtains <classname alt="boost::container::private_adaptive_pool">private_adaptive_pool</classname> from <classname alt="boost::container::private_adaptive_pool">private_adaptive_pool</classname> </para></description><typedef name="other"><type><classname>private_adaptive_pool</classname>&lt; T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent &gt;</type></typedef>
  68. </struct><typedef name="allocation_type"><description><para>If Version is 1, the allocator is a STL conforming allocator. If Version is 2, the allocator offers advanced expand in place and burst allocation capabilities. </para></description><type>unsigned int</type></typedef>
  69. <typedef name="self_t"><type><classname>private_adaptive_pool</classname>&lt; T, NodesPerBlock, MaxFreeBlocks, OverheadPercent &gt;</type></typedef>
  70. <typedef name="pool_t"><type>dtl::private_adaptive_node_pool&lt; sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent &gt;</type></typedef>
  71. <typedef name="value_type"><type>T</type></typedef>
  72. <typedef name="pointer"><type>T *</type></typedef>
  73. <typedef name="const_pointer"><type>const T *</type></typedef>
  74. <typedef name="reference"><type>::boost::container::dtl::unvoid_ref&lt; T &gt;::type</type></typedef>
  75. <typedef name="const_reference"><type>::boost::container::dtl::unvoid_ref&lt; const T &gt;::type</type></typedef>
  76. <typedef name="size_type"><type>std::size_t</type></typedef>
  77. <typedef name="difference_type"><type>std::ptrdiff_t</type></typedef>
  78. <typedef name="version"><type>boost::container::dtl::version_type&lt; <classname>self_t</classname>, Version &gt;</type></typedef>
  79. <data-member name="nodes_per_block" specifiers="static"><type>const std::size_t</type></data-member>
  80. <data-member name="max_free_blocks" specifiers="static"><type>const std::size_t</type></data-member>
  81. <data-member name="overhead_percent" specifiers="static"><type>const std::size_t</type></data-member>
  82. <data-member name="real_nodes_per_block" specifiers="static"><type>const std::size_t</type></data-member>
  83. <data-member name="m_pool"><type>pool_t</type></data-member>
  84. <method-group name="public member functions">
  85. <method name="BOOST_CONTAINER_DOCIGN"><type/><parameter name=""><paramtype>BOOST_STATIC_ASSERT((Version&lt;=2))</paramtype></parameter></method>
  86. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para>Returns the number of elements that could be allocated. Never throws </para></description></method>
  87. <method name="allocate"><type>pointer</type><parameter name="count"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype>const void *</paramtype><default>0</default></parameter><description><para>Allocate memory for an array of count elements. Throws std::bad_alloc if there is no enough memory </para></description></method>
  88. <method name="deallocate" cv="noexcept"><type>void</type><parameter name="ptr"><paramtype>const pointer &amp;</paramtype></parameter><parameter name="count"><paramtype>size_type</paramtype></parameter><description><para>Deallocate allocated memory. Never throws </para></description></method>
  89. <method name="allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>size_type</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse"><paramtype>pointer &amp;</paramtype></parameter></method>
  90. <method name="size" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Returns maximum the number of objects the previously allocated memory pointed by p can hold. </para></description></method>
  91. <method name="allocate_one"><type>pointer</type><description><para>Allocates just one object. Memory allocated with this function must be deallocated only with deallocate_one(). Throws bad_alloc if there is no enough memory </para></description></method>
  92. <method name="allocate_individual"><type>void</type><parameter name="num_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size == 1. Elements must be individually deallocated with deallocate_one() </para></description></method>
  93. <method name="deallocate_one" cv="noexcept"><type>void</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Deallocates memory previously allocated with allocate_one(). You should never use deallocate_one to deallocate memory allocated with other functions different from allocate_one(). Never throws </para></description></method>
  94. <method name="deallocate_individual" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter></method>
  95. <method name="allocate_many"><type>void</type><parameter name="elem_size"><paramtype>size_type</paramtype></parameter><parameter name="n_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size elem_size. Elements must be individually deallocated with deallocate() </para></description></method>
  96. <method name="allocate_many"><type>void</type><parameter name="elem_sizes"><paramtype>const size_type *</paramtype></parameter><parameter name="n_elements"><paramtype>size_type</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates n_elements elements, each one of size elem_sizes[i] Elements must be individually deallocated with deallocate() </para></description></method>
  97. <method name="deallocate_many" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter></method>
  98. <method name="deallocate_free_blocks" cv="noexcept"><type>void</type><purpose>Deallocates all free blocks of the pool. </purpose></method>
  99. </method-group>
  100. <constructor cv="noexcept"><purpose>Default constructor. </purpose></constructor>
  101. <constructor cv="noexcept"><parameter name=""><paramtype>const <classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><purpose>Copy constructor from other <classname alt="boost::container::private_adaptive_pool">private_adaptive_pool</classname>. </purpose></constructor>
  102. <constructor cv="noexcept"><template>
  103. <template-type-parameter name="T2"/>
  104. </template><parameter name=""><paramtype>const <classname>private_adaptive_pool</classname>&lt; T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)&gt; &amp;</paramtype></parameter><purpose>Copy constructor from related <classname alt="boost::container::private_adaptive_pool">private_adaptive_pool</classname>. </purpose></constructor>
  105. <destructor><purpose>Destructor. </purpose></destructor>
  106. <method-group name="friend functions">
  107. <method name="swap" cv="noexcept"><type>friend void</type><parameter name=""><paramtype><classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><parameter name=""><paramtype><classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><description><para>Swaps allocators. Does not throw. If each allocator is placed in a different memory segment, the result is undefined. </para></description></method>
  108. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to true, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  109. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>private_adaptive_pool</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  110. </method-group>
  111. <method-group name="private member functions">
  112. <method name="priv_allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>std::size_t</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse_ptr"><paramtype>pointer &amp;</paramtype></parameter></method>
  113. </method-group>
  114. </class>
  115. </namespace>
  116. </namespace>
  117. </header>
  118. <header name="boost/container/allocator.hpp">
  119. <namespace name="boost">
  120. <namespace name="container">
  121. <class name="allocator"><template>
  122. <template-type-parameter name="T"/>
  123. <template-nontype-parameter name="Version"><type>unsigned</type><default>2</default></template-nontype-parameter>
  124. <template-nontype-parameter name="AllocationDisableMask"><type>unsigned int</type><default>0</default></template-nontype-parameter>
  125. </template><description><para>This class is an extended STL-compatible that offers advanced allocation mechanism (in-place expansion, shrinking, burst-allocation...)</para><para>This allocator is a wrapper around a modified DLmalloc. If Version is 1, the allocator is a STL conforming allocator. If Version is 2, the allocator offers advanced expand in place and burst allocation capabilities.</para><para>AllocationDisableMask works only if Version is 2 and it can be an inclusive OR of allocation types the user wants to disable. </para></description><struct name="rebind"><template>
  126. <template-type-parameter name="T2"/>
  127. </template><description><para>Obtains an allocator that allocates objects of type T2 </para></description><typedef name="other"><type><classname>allocator</classname>&lt; T2, Version, AllocationDisableMask &gt;</type></typedef>
  128. </struct><typedef name="value_type"><type>T</type></typedef>
  129. <typedef name="pointer"><type>T *</type></typedef>
  130. <typedef name="const_pointer"><type>const T *</type></typedef>
  131. <typedef name="reference"><type>T &amp;</type></typedef>
  132. <typedef name="const_reference"><type>const T &amp;</type></typedef>
  133. <typedef name="size_type"><type>std::size_t</type></typedef>
  134. <typedef name="difference_type"><type>std::ptrdiff_t</type></typedef>
  135. <typedef name="version"><type>boost::container::dtl::version_type&lt; self_t, Version &gt;</type></typedef>
  136. <method-group name="public member functions">
  137. <method name="allocate"><type>pointer</type><parameter name="count"><paramtype>size_type</paramtype></parameter><parameter name="hint"><paramtype>const void *</paramtype><default>0</default></parameter><description><para>Allocates memory for an array of count elements. Throws std::bad_alloc if there is no enough memory If Version is 2, this allocated memory can only be deallocated with deallocate() or (for Version == 2) deallocate_many() </para></description></method>
  138. <method name="deallocate" cv="noexcept"><type>void</type><parameter name="ptr"><paramtype>pointer</paramtype></parameter><parameter name=""><paramtype>size_type</paramtype></parameter><description><para>Deallocates previously allocated memory. Never throws </para></description></method>
  139. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para>Returns the maximum number of elements that could be allocated. Never throws </para></description></method>
  140. <method name="allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>size_type</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse"><paramtype>pointer &amp;</paramtype></parameter><description><para>An advanced function that offers in-place expansion shrink to fit and new allocation capabilities. Memory allocated with this function can only be deallocated with deallocate() or deallocate_many(). This function is available only with Version == 2 </para></description></method>
  141. <method name="size" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Returns maximum the number of objects the previously allocated memory pointed by p can hold. Memory must not have been allocated with allocate_one or allocate_individual. This function is available only with Version == 2 </para></description></method>
  142. <method name="allocate_one"><type>pointer</type><description><para>Allocates just one object. Memory allocated with this function must be deallocated only with deallocate_one(). Throws bad_alloc if there is no enough memory This function is available only with Version == 2 </para></description></method>
  143. <method name="allocate_individual"><type>void</type><parameter name="num_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size == 1. Elements must be individually deallocated with deallocate_one() This function is available only with Version == 2 </para></description></method>
  144. <method name="deallocate_one" cv="noexcept"><type>void</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Deallocates memory previously allocated with allocate_one(). You should never use deallocate_one to deallocate memory allocated with other functions different from allocate_one() or allocate_individual. </para></description></method>
  145. <method name="deallocate_individual" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Deallocates memory allocated with allocate_one() or allocate_individual(). This function is available only with Version == 2 </para></description></method>
  146. <method name="allocate_many"><type>void</type><parameter name="elem_size"><paramtype>size_type</paramtype></parameter><parameter name="n_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size elem_size. Elements must be individually deallocated with deallocate() This function is available only with Version == 2 </para></description></method>
  147. <method name="allocate_many"><type>void</type><parameter name="elem_sizes"><paramtype>const size_type *</paramtype></parameter><parameter name="n_elements"><paramtype>size_type</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates n_elements elements, each one of size elem_sizes[i] Elements must be individually deallocated with deallocate() This function is available only with Version == 2 </para></description></method>
  148. <method name="deallocate_many" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Deallocates several elements allocated by allocate_many(), allocate(), or allocation_command(). This function is available only with Version == 2 </para></description></method>
  149. </method-group>
  150. <constructor cv="noexcept"><description><para>Default constructor Never throws </para></description></constructor>
  151. <constructor cv="noexcept"><parameter name=""><paramtype>const <classname>allocator</classname> &amp;</paramtype></parameter><description><para>Constructor from other allocator. Never throws </para></description></constructor>
  152. <constructor cv="noexcept"><template>
  153. <template-type-parameter name="T2"/>
  154. </template><parameter name=""><paramtype>const <classname>allocator</classname>&lt; T2 &gt; &amp;</paramtype></parameter><description><para>Constructor from related allocator. Never throws </para></description></constructor>
  155. <method-group name="friend functions">
  156. <method name="swap" cv="noexcept"><type>friend void</type><parameter name=""><paramtype>self_t &amp;</paramtype></parameter><parameter name=""><paramtype>self_t &amp;</paramtype></parameter><description><para>Swaps two allocators, does nothing because this allocator is stateless </para></description></method>
  157. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>allocator</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to true, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  158. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>allocator</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  159. </method-group>
  160. <method-group name="private member functions">
  161. <method name="priv_allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>std::size_t</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse_ptr"><paramtype>pointer &amp;</paramtype></parameter></method>
  162. </method-group>
  163. </class>
  164. </namespace>
  165. </namespace>
  166. </header>
  167. <header name="boost/container/allocator_traits.hpp">
  168. <namespace name="boost">
  169. <namespace name="container">
  170. <struct name="allocator_traits"><template>
  171. <template-type-parameter name="Allocator"/>
  172. </template><description><para>The class template <classname alt="boost::container::allocator_traits">allocator_traits</classname> supplies a uniform interface to all allocator types. This class is a C++03-compatible implementation of std::allocator_traits </para></description><struct name="portable_rebind_alloc"><template>
  173. <template-type-parameter name="T"/>
  174. </template><description><para>Non-standard extension: Portable allocator rebind for C++03 and C++11 compilers. <computeroutput>type</computeroutput> is an allocator related to Allocator deduced deduced by rules explained in <computeroutput>rebind_alloc</computeroutput>. </para></description><typedef name="type"><type>see_documentation</type></typedef>
  175. </struct><typedef name="allocator_type"><type>Allocator</type></typedef>
  176. <typedef name="value_type"><type>allocator_type::value_type</type></typedef>
  177. <typedef name="pointer"><description><para>Allocator::pointer if such a type exists; otherwise, value_type* </para></description><type>unspecified</type></typedef>
  178. <typedef name="const_pointer"><description><para>Allocator::const_pointer if such a type exists ; otherwise, pointer_traits&lt;pointer&gt;::rebind&lt;const </para></description><type>see_documentation</type></typedef>
  179. <typedef name="reference"><description><para>Non-standard extension Allocator::reference if such a type exists; otherwise, value_type&amp; </para></description><type>see_documentation</type></typedef>
  180. <typedef name="const_reference"><description><para>Non-standard extension Allocator::const_reference if such a type exists ; otherwise, const value_type&amp; </para></description><type>see_documentation</type></typedef>
  181. <typedef name="void_pointer"><description><para>Allocator::void_pointer if such a type exists ; otherwise, pointer_traits&lt;pointer&gt;::rebind&lt;void&gt;. </para></description><type>see_documentation</type></typedef>
  182. <typedef name="const_void_pointer"><description><para>Allocator::const_void_pointer if such a type exists ; otherwise, pointer_traits&lt;pointer&gt;::rebind&lt;const </para></description><type>see_documentation</type></typedef>
  183. <typedef name="difference_type"><description><para>Allocator::difference_type if such a type exists ; otherwise, pointer_traits&lt;pointer&gt;::difference_type. </para></description><type>see_documentation</type></typedef>
  184. <typedef name="size_type"><description><para>Allocator::size_type if such a type exists ; otherwise, make_unsigned&lt;difference_type&gt;::type </para></description><type>see_documentation</type></typedef>
  185. <typedef name="propagate_on_container_copy_assignment"><description><para>Allocator::propagate_on_container_copy_assignment if such a type exists, otherwise a type with an internal constant static boolean member <computeroutput>value</computeroutput> == false. </para></description><type>see_documentation</type></typedef>
  186. <typedef name="propagate_on_container_move_assignment"><description><para>Allocator::propagate_on_container_move_assignment if such a type exists, otherwise a type with an internal constant static boolean member <computeroutput>value</computeroutput> == false. </para></description><type>see_documentation</type></typedef>
  187. <typedef name="propagate_on_container_swap"><description><para>Allocator::propagate_on_container_swap if such a type exists, otherwise a type with an internal constant static boolean member <computeroutput>value</computeroutput> == false. </para></description><type>see_documentation</type></typedef>
  188. <typedef name="is_always_equal"><description><para>Allocator::is_always_equal if such a type exists, otherwise a type with an internal constant static boolean member <computeroutput>value</computeroutput> == is_empty&lt;Allocator&gt;::value </para></description><type>see_documentation</type></typedef>
  189. <typedef name="is_partially_propagable"><description><para>Allocator::is_partially_propagable if such a type exists, otherwise a type with an internal constant static boolean member <computeroutput>value</computeroutput> == false <emphasis role="bold">Note</emphasis>: Non-standard extension used to implement <computeroutput><classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname></computeroutput>. </para></description><type>see_documentation</type></typedef>
  190. <typedef name="rebind_alloc"><description><para>Defines an allocator: Allocator::rebind&lt;T&gt;::other if such a type exists; otherwise, Allocator&lt;T, Args&gt; if Allocator is a class template instantiation of the form Allocator&lt;U, Args&gt;, where Args is zero or more type arguments ; otherwise, the instantiation of rebind_alloc is ill-formed.</para><para>In C++03 compilers <computeroutput>rebind_alloc</computeroutput> is a struct derived from an allocator deduced by previously detailed rules. </para></description><type>see_documentation</type></typedef>
  191. <typedef name="rebind_traits"><description><para>In C++03 compilers <computeroutput>rebind_traits</computeroutput> is a struct derived from <computeroutput>allocator_traits&lt;OtherAlloc&gt;</computeroutput>, where <computeroutput>OtherAlloc</computeroutput> is the allocator deduced by rules explained in <computeroutput>rebind_alloc</computeroutput>. </para></description><type><classname>allocator_traits</classname>&lt; rebind_alloc&lt; T &gt; &gt;</type></typedef>
  192. <method-group name="public static functions">
  193. <method name="allocate" specifiers="static"><type>pointer</type><parameter name="a"><paramtype>Allocator &amp;</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>a.allocate(n)</computeroutput> </para></description></method>
  194. <method name="deallocate" specifiers="static"><type>void</type><parameter name="a"><paramtype>Allocator &amp;</paramtype></parameter><parameter name="p"><paramtype>pointer</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>a.deallocate(p, n)</computeroutput></para><para><emphasis role="bold">Throws</emphasis>: Nothing </para></description></method>
  195. <method name="allocate" specifiers="static"><type>pointer</type><parameter name="a"><paramtype>Allocator &amp;</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="p"><paramtype>const_void_pointer</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: calls <computeroutput>a.allocate(n, p)</computeroutput> if that call is well-formed; otherwise, invokes <computeroutput>a.allocate(n)</computeroutput> </para></description></method>
  196. <method name="destroy" cv="noexcept" specifiers="static"><type>void</type><template>
  197. <template-type-parameter name="T"/>
  198. </template><parameter name="a"><paramtype>Allocator &amp;</paramtype></parameter><parameter name="p"><paramtype>T *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: calls <computeroutput>a.destroy(p)</computeroutput> if that call is well-formed; otherwise, invokes <computeroutput>p-&gt;~T()</computeroutput>. </para></description></method>
  199. <method name="max_size" cv="noexcept" specifiers="static"><type>size_type</type><parameter name="a"><paramtype>const Allocator &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>a.max_size()</computeroutput> if that expression is well-formed; otherwise, <computeroutput>numeric_limits&lt;size_type&gt;::max()</computeroutput>. </para></description></method>
  200. <method name="select_on_container_copy_construction" specifiers="static"><type>Allocator</type><parameter name="a"><paramtype>const Allocator &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>a.select_on_container_copy_construction()</computeroutput> if that expression is well-formed; otherwise, a. </para></description></method>
  201. <method name="construct" specifiers="static"><type>void</type><template>
  202. <template-type-parameter name="T"/>
  203. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  204. </template><parameter name="a"><paramtype>Allocator &amp;</paramtype></parameter><parameter name="p"><paramtype>T *</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: calls <computeroutput>a.construct(p, std::forward&lt;Args&gt;(args)...)</computeroutput> if that call is well-formed; otherwise, invokes <computeroutput><computeroutput>placement new</computeroutput> (static_cast&lt;void*&gt;(p)) T(std::forward&lt;Args&gt;(args)...)</computeroutput> </para></description></method>
  205. <method name="storage_is_unpropagable" cv="noexcept" specifiers="static"><type>bool</type><parameter name="a"><paramtype>const Allocator &amp;</paramtype></parameter><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>a.storage_is_unpropagable(p)</computeroutput> if is_partially_propagable::value is true; otherwise, <computeroutput>false</computeroutput>. </para></description></method>
  206. <method name="equal" cv="noexcept" specifiers="static"><type>bool</type><parameter name="a"><paramtype>const Allocator &amp;</paramtype></parameter><parameter name="b"><paramtype>const Allocator &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>true</computeroutput> if <computeroutput>is_always_equal::value == true</computeroutput>, otherwise, <computeroutput>a == b</computeroutput>. </para></description></method>
  207. </method-group>
  208. </struct>
  209. </namespace>
  210. </namespace>
  211. </header>
  212. <header name="boost/container/container_fwd.hpp">
  213. <para>This header file forward declares the following containers:<itemizedlist>
  214. <listitem><para><classname alt="boost::container::vector">boost::container::vector</classname></para>
  215. </listitem><listitem><para><classname alt="boost::container::stable_vector">boost::container::stable_vector</classname></para>
  216. </listitem><listitem><para><classname alt="boost::container::static_vector">boost::container::static_vector</classname></para>
  217. </listitem><listitem><para><classname alt="boost::container::small_vector_base">boost::container::small_vector_base</classname></para>
  218. </listitem><listitem><para><classname alt="boost::container::small_vector">boost::container::small_vector</classname></para>
  219. </listitem><listitem><para><classname alt="boost::container::slist">boost::container::slist</classname></para>
  220. </listitem><listitem><para><classname alt="boost::container::list">boost::container::list</classname></para>
  221. </listitem><listitem><para><classname alt="boost::container::set">boost::container::set</classname></para>
  222. </listitem><listitem><para><classname alt="boost::container::multiset">boost::container::multiset</classname></para>
  223. </listitem><listitem><para><classname alt="boost::container::map">boost::container::map</classname></para>
  224. </listitem><listitem><para><classname alt="boost::container::multimap">boost::container::multimap</classname></para>
  225. </listitem><listitem><para><classname alt="boost::container::flat_set">boost::container::flat_set</classname></para>
  226. </listitem><listitem><para><classname alt="boost::container::flat_multiset">boost::container::flat_multiset</classname></para>
  227. </listitem><listitem><para><classname alt="boost::container::flat_map">boost::container::flat_map</classname></para>
  228. </listitem><listitem><para><classname alt="boost::container::flat_multimap">boost::container::flat_multimap</classname></para>
  229. </listitem><listitem><para><classname alt="boost::container::basic_string">boost::container::basic_string</classname></para>
  230. </listitem><listitem><para>boost::container::string</para>
  231. </listitem><listitem><para>boost::container::wstring</para>
  232. </listitem></itemizedlist>
  233. </para><para>Forward declares the following allocators:<itemizedlist>
  234. <listitem><para><classname alt="boost::container::allocator">boost::container::allocator</classname></para>
  235. </listitem><listitem><para><classname alt="boost::container::node_allocator">boost::container::node_allocator</classname></para>
  236. </listitem><listitem><para><classname alt="boost::container::adaptive_pool">boost::container::adaptive_pool</classname></para>
  237. </listitem></itemizedlist>
  238. </para><para>Forward declares the following polymorphic resource classes:<itemizedlist>
  239. <listitem><para><classname alt="boost::container::pmr::memory_resource">boost::container::pmr::memory_resource</classname></para>
  240. </listitem><listitem><para><classname alt="boost::container::pmr::polymorphic_allocator">boost::container::pmr::polymorphic_allocator</classname></para>
  241. </listitem><listitem><para><classname alt="boost::container::pmr::monotonic_buffer_resource">boost::container::pmr::monotonic_buffer_resource</classname></para>
  242. </listitem><listitem><para><classname alt="boost::container::pmr::pool_options">boost::container::pmr::pool_options</classname></para>
  243. </listitem><listitem><para><classname alt="boost::container::pmr::unsynchronized_pool_resource">boost::container::pmr::unsynchronized_pool_resource</classname></para>
  244. </listitem><listitem><para><classname alt="boost::container::pmr::synchronized_pool_resource">boost::container::pmr::synchronized_pool_resource</classname></para>
  245. </listitem></itemizedlist>
  246. </para><para>And finally it defines the following types </para><namespace name="boost">
  247. <namespace name="container">
  248. <struct name="default_init_t"><description><para>Type used to tag that the inserted values should be default initialized </para></description></struct><struct name="ordered_range_t"><description><para>Type used to tag that the input range is guaranteed to be ordered </para></description></struct><struct name="ordered_unique_range_t"><inherit access="public">boost::container::ordered_range_t</inherit><description><para>Type used to tag that the input range is guaranteed to be ordered and unique </para></description></struct><data-member name="ordered_range" specifiers="static"><type>const <classname>ordered_range_t</classname></type><description><para>Value used to tag that the input range is guaranteed to be ordered </para></description></data-member>
  249. <data-member name="ordered_unique_range" specifiers="static"><type>const <classname>ordered_unique_range_t</classname></type><description><para>Value used to tag that the input range is guaranteed to be ordered and unique </para></description></data-member>
  250. <data-member name="default_init" specifiers="static"><type>const <classname>default_init_t</classname></type><description><para>Value used to tag that the inserted values should be default initialized </para></description></data-member>
  251. </namespace>
  252. </namespace>
  253. </header>
  254. <header name="boost/container/deque.hpp">
  255. <namespace name="boost">
  256. <namespace name="container">
  257. <class name="deque"><template>
  258. <template-type-parameter name="T"><purpose><para>The type of object that is stored in the deque </para></purpose></template-type-parameter>
  259. <template-type-parameter name="Allocator"><default>void</default></template-type-parameter>
  260. <template-type-parameter name="Options"><default>void</default><purpose><para>A type produced from <computeroutput><classname alt="boost::container::deque_options">boost::container::deque_options</classname></computeroutput>. </para></purpose></template-type-parameter>
  261. </template><inherit access="protected">deque_base&lt; real_allocator&lt; T, Allocator &gt;::type, Options &gt;</inherit><description><para>A double-ended queue is a sequence that supports random access to elements, constant time insertion and removal of elements at the end of the sequence, and linear time insertion and removal of elements in the middle.</para><para>
  262. </para></description><typedef name="value_type"><type>T</type></typedef>
  263. <typedef name="allocator_type"><type>ValAllocator</type></typedef>
  264. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValAllocator &gt;::pointer</type></typedef>
  265. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValAllocator &gt;::const_pointer</type></typedef>
  266. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValAllocator &gt;::reference</type></typedef>
  267. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValAllocator &gt;::const_reference</type></typedef>
  268. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValAllocator &gt;::size_type</type></typedef>
  269. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValAllocator &gt;::difference_type</type></typedef>
  270. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  271. <typedef name="iterator"><type>implementation_defined</type></typedef>
  272. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  273. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  274. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  275. <method-group name="public static functions">
  276. <method name="get_block_size" cv="noexcept" specifiers="static"><type>BOOST_CONSTEXPR size_type</type></method>
  277. </method-group>
  278. <method-group name="public member functions">
  279. <method name="assign"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="val"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the n copies of val to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  280. <method name="assign"><type>void</type><template>
  281. <template-type-parameter name="InIt"/>
  282. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [first, last) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  283. <method name="assign"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [il.begin(), il.end()) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to il.size(). </para></description></method>
  284. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: If allocator's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  285. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  286. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  287. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  288. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  289. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  290. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  291. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  292. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  293. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  294. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  295. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  296. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  297. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  298. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  299. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the deque contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  300. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  301. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  302. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are value initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  303. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are default initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  304. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are copy constructed from x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  305. <method name="shrink_to_fit"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created with previous allocations. The size of the deque is unchanged</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  306. <method name="front" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  307. <method name="front" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  308. <method name="back" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  309. <method name="back" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  310. <method name="operator[]" cv="noexcept"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  311. <method name="operator[]" cv="const noexcept"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  312. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  313. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  314. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  315. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  316. <method name="at"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  317. <method name="at" cv="const"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  318. <method name="emplace_front"><type>reference</type><template>
  319. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  320. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the beginning of the deque.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time </para></description></method>
  321. <method name="emplace_back"><type>reference</type><template>
  322. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  323. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the end of the deque.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time </para></description></method>
  324. <method name="emplace"><type>iterator</type><template>
  325. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  326. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... before p</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: If p is end(), amortized constant time Linear time otherwise. </para></description></method>
  327. <method name="push_front"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the front of the deque.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  328. <method name="push_front"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the front of the deque and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  329. <method name="push_back"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the end of the deque.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  330. <method name="push_back"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the end of the deque and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  331. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of x before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or x's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: If p is end(), amortized constant time Linear time otherwise. </para></description></method>
  332. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a new element before p with x's resources.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: If p is end(), amortized constant time Linear time otherwise. </para></description></method>
  333. <method name="insert"><type>iterator</type><parameter name="pos"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert n copies of x before pos.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or pos if n is 0.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  334. <method name="insert"><type>iterator</type><template>
  335. <template-type-parameter name="InIt"/>
  336. </template><parameter name="pos"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [first, last) range before pos.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or pos if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InIt throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [first, last). </para></description></method>
  337. <method name="insert"><type>iterator</type><parameter name="pos"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [il.begin(), il.end()) range before pos.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or pos if il.begin() == il.end().</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced std::initializer_list throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [il.begin(), il.end()). </para></description></method>
  338. <method name="pop_front" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element from the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant time. </para></description></method>
  339. <method name="pop_back" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the last element from the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant time. </para></description></method>
  340. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="pos"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element at p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements between pos and the last element (if pos is near the end) or the first element if(pos is near the beginning). Constant if pos is the first or the last element. </para></description></method>
  341. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the elements pointed by [first, last).</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the distance between first and last plus the elements between pos and the last element (if pos is near the end) or the first element if(pos is near the beginning). </para></description></method>
  342. <method name="swap" cv="noexcept(allocator_traits_type::propagate_on_container_swap::value||allocator_traits_type::is_always_equal::value))"><type>void</type><parameter name="x"><paramtype><classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  343. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements of the deque.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the deque. </para></description></method>
  344. </method-group>
  345. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; ValAllocator &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructors a deque.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  346. <constructor specifiers="explicit" cv="noexcept"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  347. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque and inserts n value initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's value initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  348. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque and inserts n default initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default initialization or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></constructor>
  349. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts n value initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's value initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  350. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts n default initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default initialization or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></constructor>
  351. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="value"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  352. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="value"><paramtype>const value_type &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  353. <constructor><template>
  354. <template-type-parameter name="InIt"/>
  355. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts a copy of the range [first, last) in the deque.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  356. <constructor><template>
  357. <template-type-parameter name="InIt"/>
  358. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts a copy of the range [first, last) in the deque.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  359. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a deque that will use a copy of allocator a and inserts a copy of the range [il.begin(), il.end()) in the deque.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></constructor>
  360. <constructor><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a deque.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  361. <constructor cv="noexcept"><parameter name="x"><paramtype><classname>deque</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  362. <constructor><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a vector using the specified allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  363. <constructor><parameter name="x"><paramtype><classname>deque</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor using the specified allocator. Moves x's resources to *this if a == allocator_type(). Otherwise copies values from x to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  364. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys the deque. All stored values are destroyed and used memory is deallocated.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements. </para></description></destructor>
  365. <copy-assignment><type><classname>deque</classname> &amp;</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as x.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == x.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in x. </para></description></copy-assignment>
  366. <copy-assignment cv="noexcept(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value))"><type><classname>deque</classname> &amp;</type><parameter name="x"><paramtype><classname>deque</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move assignment. All x's values are transferred to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  367. <copy-assignment><type><classname>deque</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as il.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == il.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in il. </para></description></copy-assignment>
  368. <method-group name="friend functions">
  369. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  370. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  371. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  372. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  373. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  374. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  375. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>deque</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>deque</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  376. </method-group>
  377. </class>
  378. <function name="deque"><type/><template>
  379. <template-type-parameter name="InputIterator"/>
  380. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  381. <function name="deque"><type/><template>
  382. <template-type-parameter name="InputIterator"/>
  383. <template-type-parameter name="Allocator"/>
  384. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  385. </namespace>
  386. </namespace>
  387. </header>
  388. <header name="boost/container/pmr/deque.hpp">
  389. <namespace name="boost">
  390. <namespace name="container">
  391. <namespace name="pmr">
  392. <struct name="deque_of"><template>
  393. <template-type-parameter name="T"/>
  394. </template><description><para>A portable metafunction to obtain a deque that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::deque</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  395. </struct><typedef name="deque"><type><classname>boost::container::deque</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  396. </namespace>
  397. </namespace>
  398. </namespace>
  399. </header>
  400. <header name="boost/container/flat_map.hpp">
  401. <namespace name="boost">
  402. <namespace name="container">
  403. <class name="flat_map"><template>
  404. <template-type-parameter name="Key"><purpose><para>is the key_type of the map </para></purpose></template-type-parameter>
  405. <template-type-parameter name="T"/>
  406. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the ordering function for Keys (e.g. <emphasis>std::less&lt;Key&gt;</emphasis>). </para></purpose></template-type-parameter>
  407. <template-type-parameter name="AllocatorOrContainer"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt; std::pair&lt; Key, T&gt; &gt;</default><purpose><para>is either:<itemizedlist>
  408. <listitem><para>The allocator to allocate <computeroutput>value_type</computeroutput>s (e.g. <emphasis>allocator&lt; std::pair&lt;Key, T&gt; &gt; </emphasis>). (in this case <emphasis>sequence_type</emphasis> will be vector&lt;value_type, AllocatorOrContainer&gt;)</para>
  409. </listitem><listitem><para>The SequenceContainer to be used as the underlying <emphasis>sequence_type</emphasis>. It must be a vector-like sequence container with random-access iterators.. </para>
  410. </listitem></itemizedlist>
  411. </para></purpose></template-type-parameter>
  412. </template><description><para>A <classname alt="boost::container::flat_map">flat_map</classname> is a kind of associative container that supports unique keys (contains at most one of each key value) and provides for fast retrieval of values of another type T based on the keys.</para><para>A <classname alt="boost::container::flat_map">flat_map</classname> satisfies all of the requirements of a container, a reversible container and an associative container. A <classname alt="boost::container::flat_map">flat_map</classname> also provides most operations described for unique keys. For a flat_map&lt;Key,T&gt; the key_type is Key and the value_type is std::pair&lt;Key,T&gt; (unlike std::map&lt;Key, T&gt; which value_type is std::pair&lt;<emphasis role="bold">const</emphasis> Key, T&gt;).</para><para><classname alt="boost::container::flat_map">flat_map</classname> is similar to std::map but it's implemented by as an ordered sequence container. The underlying sequence container is by default <emphasis>vector</emphasis> but it can also work user-provided vector-like SequenceContainers (like <emphasis><classname alt="boost::container::static_vector">static_vector</classname></emphasis> or <emphasis><classname alt="boost::container::small_vector">small_vector</classname></emphasis>).</para><para>Using vector-like sequence containers means that inserting a new element into a <classname alt="boost::container::flat_map">flat_map</classname> might invalidate previous iterators and references (unless that sequence container is <emphasis><classname alt="boost::container::stable_vector">stable_vector</classname></emphasis> or a similar container that offers stable pointers and references). Similarly, erasing an element might invalidate iterators and references pointing to elements that come after (their keys are bigger) the erased element.</para><para>This container provides random-access iterators.</para><para>
  413. </para></description><typedef name="key_type"><type>Key</type></typedef>
  414. <typedef name="mapped_type"><type>T</type></typedef>
  415. <typedef name="key_compare"><type>Compare</type></typedef>
  416. <typedef name="value_type"><type>std::pair&lt; Key, T &gt;</type></typedef>
  417. <typedef name="sequence_type"><type>implementation_defined</type></typedef>
  418. <typedef name="allocator_type"><type>sequence_type::allocator_type</type></typedef>
  419. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  420. <typedef name="pointer"><type>sequence_type::pointer</type></typedef>
  421. <typedef name="const_pointer"><type>sequence_type::const_pointer</type></typedef>
  422. <typedef name="reference"><type>sequence_type::reference</type></typedef>
  423. <typedef name="const_reference"><type>sequence_type::const_reference</type></typedef>
  424. <typedef name="size_type"><type>sequence_type::size_type</type></typedef>
  425. <typedef name="difference_type"><type>sequence_type::difference_type</type></typedef>
  426. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  427. <typedef name="value_compare"><type>implementation_defined</type></typedef>
  428. <typedef name="iterator"><type>sequence_type::iterator</type></typedef>
  429. <typedef name="const_iterator"><type>sequence_type::const_iterator</type></typedef>
  430. <typedef name="reverse_iterator"><type>sequence_type::reverse_iterator</type></typedef>
  431. <typedef name="const_reverse_iterator"><type>sequence_type::const_reverse_iterator</type></typedef>
  432. <typedef name="movable_value_type"><type>implementation_defined</type></typedef>
  433. <method-group name="public member functions">
  434. <method name="BOOST_STATIC_ASSERT"><type/><parameter name=""><paramtype>(dtl::is_same&lt; std::pair&lt; Key, T &gt;, value_type &gt;::value)</paramtype></parameter></method>
  435. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  436. <method name="get_stored_allocator" cv="noexcept"><type>get_stored_allocator_noconst_return_t</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  437. <method name="get_stored_allocator" cv="const noexcept"><type>get_stored_allocator_const_return_t</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  438. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  439. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  440. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  441. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  442. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  443. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  444. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  445. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  446. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  447. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  448. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  449. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  450. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  451. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  452. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  453. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  454. <method name="reserve"><type>void</type><parameter name="cnt"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), or the underlying container has no <computeroutput>reserve</computeroutput> member, this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Note</emphasis>: If capacity() is less than "cnt", iterators and references to to values might be invalidated. </para></description></method>
  455. <method name="shrink_to_fit"><type>void</type><purpose><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created </purpose><description><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  456. <method name="operator[]"><type>mapped_type &amp;</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para>Effects: If there is no key equivalent to x in the <classname alt="boost::container::flat_map">flat_map</classname>, inserts value_type(x, T()) into the <classname alt="boost::container::flat_map">flat_map</classname>.</para><para>Returns: A reference to the mapped_type corresponding to x in *this.</para><para>Complexity: Logarithmic. </para></description></method>
  457. <method name="operator[]"><type>mapped_type &amp;</type><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><description><para>Effects: If there is no key equivalent to x in the <classname alt="boost::container::flat_map">flat_map</classname>, inserts value_type(move(x), T()) into the <classname alt="boost::container::flat_map">flat_map</classname> (the key is move-constructed)</para><para>Returns: A reference to the mapped_type corresponding to x in *this.</para><para>Complexity: Logarithmic. </para></description></method>
  458. <method name="insert_or_assign"><type>std::pair&lt; iterator, bool &gt;</type><template>
  459. <template-type-parameter name="M"/>
  460. </template><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para>Effects: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, forward&lt;M&gt;(obj)).</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para>Returns: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para>Complexity: Logarithmic in the size of the container. </para></description></method>
  461. <method name="insert_or_assign"><type>std::pair&lt; iterator, bool &gt;</type><template>
  462. <template-type-parameter name="M"/>
  463. </template><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para>Effects: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, move(obj)).</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para>Returns: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para>Complexity: Logarithmic in the size of the container. </para></description></method>
  464. <method name="insert_or_assign"><type>iterator</type><template>
  465. <template-type-parameter name="M"/>
  466. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para>Effects: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, forward&lt;M&gt;(obj)) and the new element to the container as close as possible to the position just before hint.</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para>Returns: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para>Complexity: Logarithmic in the size of the container in general, but amortized constant if the new element is inserted just before hint. </para></description></method>
  467. <method name="insert_or_assign"><type>iterator</type><template>
  468. <template-type-parameter name="M"/>
  469. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para>Effects: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, move(obj)) and the new element to the container as close as possible to the position just before hint.</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para>Returns: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para>Complexity: Logarithmic in the size of the container in general, but amortized constant if the new element is inserted just before hint. </para></description></method>
  470. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  471. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  472. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  473. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  474. <method name="at"><type>T &amp;</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para>Returns: A reference to the element whose key is equivalent to x.</para><para>Throws: An exception object of type out_of_range if no such element is present.</para><para>Complexity: logarithmic. </para></description></method>
  475. <method name="at" cv="const"><type>const T &amp;</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para>Returns: A reference to the element whose key is equivalent to x.</para><para>Throws: An exception object of type out_of_range if no such element is present.</para><para>Complexity: logarithmic. </para></description></method>
  476. <method name="emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  477. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  478. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object x of type T constructed with std::forward&lt;Args&gt;(args)... if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  479. <method name="emplace_hint"><type>iterator</type><template>
  480. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  481. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the container if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  482. <method name="try_emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  483. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  484. </template><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion took place. The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  485. <method name="try_emplace"><type>iterator</type><template>
  486. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  487. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if value is inserted right before p. </para></description></method>
  488. <method name="try_emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  489. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  490. </template><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion took place. The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  491. <method name="try_emplace"><type>iterator</type><template>
  492. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  493. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if value is inserted right before p. </para></description></method>
  494. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  495. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  496. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>movable_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  497. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  498. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an element move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  499. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>movable_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an element move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  500. <method name="insert"><type>void</type><template>
  501. <template-type-parameter name="InputIterator"/>
  502. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size()+N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  503. <method name="insert"><type>void</type><template>
  504. <template-type-parameter name="InputIterator"/>
  505. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) if and only if there is no element with key equivalent to the key of that element. This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  506. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  507. <method name="insert"><type>void</type><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) if and only if there is no element with key equivalent to the key of that element. This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  508. <method name="merge"><type>void</type><template>
  509. <template-type-parameter name="C2"/>
  510. </template><parameter name="source"><paramtype><classname>flat_map</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  511. <method name="merge"><type>void</type><template>
  512. <template-type-parameter name="C2"/>
  513. </template><parameter name="source"><paramtype><classname>flat_map</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  514. <method name="merge"><type>void</type><template>
  515. <template-type-parameter name="C2"/>
  516. </template><parameter name="source"><paramtype><classname>flat_multimap</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  517. <method name="merge"><type>void</type><template>
  518. <template-type-parameter name="C2"/>
  519. </template><parameter name="source"><paramtype><classname>flat_multimap</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  520. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements with keys bigger than p</para><para><emphasis role="bold">Note</emphasis>: Invalidates elements with keys not less than the erased element. </para></description></method>
  521. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  522. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: size()*N where N is the distance from first to last.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  523. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  524. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  525. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  526. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  527. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  528. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  529. <method name="find"><type>iterator</type><template>
  530. <template-type-parameter name="K"/>
  531. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  532. <method name="find" cv="const"><type>const_iterator</type><template>
  533. <template-type-parameter name="K"/>
  534. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  535. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  536. <method name="count" cv="const"><type>size_type</type><template>
  537. <template-type-parameter name="K"/>
  538. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  539. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  540. <method name="contains" cv="const"><type>bool</type><template>
  541. <template-type-parameter name="K"/>
  542. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  543. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  544. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  545. <method name="lower_bound"><type>iterator</type><template>
  546. <template-type-parameter name="K"/>
  547. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  548. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  549. <template-type-parameter name="K"/>
  550. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  551. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  552. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  553. <method name="upper_bound"><type>iterator</type><template>
  554. <template-type-parameter name="K"/>
  555. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  556. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  557. <template-type-parameter name="K"/>
  558. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  559. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  560. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  561. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  562. <template-type-parameter name="K"/>
  563. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  564. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  565. <template-type-parameter name="K"/>
  566. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  567. <method name="extract_sequence"><type>sequence_type</type><description><para><emphasis role="bold">Effects</emphasis>: Extracts the internal sequence container.</para><para><emphasis role="bold">Complexity</emphasis>: Same as the move constructor of sequence_type, usually constant.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;empty()</para><para><emphasis role="bold">Throws</emphasis>: If secuence_type's move constructor throws </para></description></method>
  568. <method name="adopt_sequence"><type>void</type><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment. Erases non-unique elements.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(NlogN) with N = seq.size()</para><para><emphasis role="bold">Throws</emphasis>: If the comparison or the move constructor throws </para></description></method>
  569. <method name="adopt_sequence"><type>void</type><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: seq shall be ordered according to this-&gt;compare() and shall contain unique elements.</para><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(1)</para><para><emphasis role="bold">Throws</emphasis>: If the move assignment throws </para></description></method>
  570. </method-group>
  571. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; AllocatorOrContainer &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty <classname alt="boost::container::flat_map">flat_map</classname>.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  572. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  573. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  574. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  575. <constructor><template>
  576. <template-type-parameter name="InputIterator"/>
  577. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> and and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  578. <constructor><template>
  579. <template-type-parameter name="InputIterator"/>
  580. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  581. <constructor><template>
  582. <template-type-parameter name="InputIterator"/>
  583. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  584. <constructor><template>
  585. <template-type-parameter name="InputIterator"/>
  586. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  587. <constructor><template>
  588. <template-type-parameter name="InputIterator"/>
  589. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  590. <constructor><template>
  591. <template-type-parameter name="InputIterator"/>
  592. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  593. <constructor><template>
  594. <template-type-parameter name="InputIterator"/>
  595. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and allocator, and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  596. <constructor><template>
  597. <template-type-parameter name="InputIterator"/>
  598. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  599. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> and inserts elements from the range [il.begin() ,il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  600. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator, and inserts elements from the range [il.begin() ,il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  601. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and inserts elements from the range [il.begin() ,il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  602. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and allocator, and inserts elements from the range [il.begin() ,il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  603. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  604. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  605. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and allocator, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  606. <constructor><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::flat_map">flat_map</classname>.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  607. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>flat_map</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a <classname alt="boost::container::flat_map">flat_map</classname>. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  608. <constructor><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  609. <constructor><parameter name="x"><paramtype><classname>flat_map</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if x.get_allocator() == a, linear otherwise. </para></description></constructor>
  610. <copy-assignment><type><classname>flat_map</classname> &amp;</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  611. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>flat_map</classname> &amp;</type><parameter name="x"><paramtype><classname>flat_map</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a <classname alt="boost::container::flat_map">flat_map</classname>. Constructs *this using x's resources.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  612. <copy-assignment><type><classname>flat_map</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><purpose><emphasis role="bold">Effects</emphasis>: Assign elements from il to *this </purpose></copy-assignment>
  613. <method-group name="friend functions">
  614. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  615. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  616. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  617. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  618. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  619. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  620. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>flat_map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>flat_map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  621. </method-group>
  622. </class><class name="flat_multimap"><template>
  623. <template-type-parameter name="Key"><purpose><para>is the key_type of the map </para></purpose></template-type-parameter>
  624. <template-type-parameter name="T"/>
  625. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the ordering function for Keys (e.g. <emphasis>std::less&lt;Key&gt;</emphasis>). </para></purpose></template-type-parameter>
  626. <template-type-parameter name="AllocatorOrContainer"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt; std::pair&lt; Key, T&gt; &gt;</default><purpose><para>is either:<itemizedlist>
  627. <listitem><para>The allocator to allocate <computeroutput>value_type</computeroutput>s (e.g. <emphasis>allocator&lt; std::pair&lt;Key, T&gt; &gt; </emphasis>). (in this case <emphasis>sequence_type</emphasis> will be vector&lt;value_type, AllocatorOrContainer&gt;)</para>
  628. </listitem><listitem><para>The SequenceContainer to be used as the underlying <emphasis>sequence_type</emphasis>. It must be a vector-like sequence container with random-access iterators. </para>
  629. </listitem></itemizedlist>
  630. </para></purpose></template-type-parameter>
  631. </template><description><para>A <classname alt="boost::container::flat_multimap">flat_multimap</classname> is a kind of associative container that supports equivalent keys (possibly containing multiple copies of the same key value) and provides for fast retrieval of values of another type T based on the keys.</para><para>A <classname alt="boost::container::flat_multimap">flat_multimap</classname> satisfies all of the requirements of a container and of a reversible container and of an associative container. For a flat_multimap&lt;Key,T&gt; the key_type is Key and the value_type is std::pair&lt;Key,T&gt; (unlike std::multimap&lt;Key, T&gt; which value_type is std::pair&lt;<emphasis role="bold">const</emphasis> Key, T&gt;).</para><para><classname alt="boost::container::flat_multimap">flat_multimap</classname> is similar to std::multimap but it's implemented by as an ordered sequence container. The underlying sequence container is by default <emphasis>vector</emphasis> but it can also work user-provided vector-like SequenceContainers (like <emphasis><classname alt="boost::container::static_vector">static_vector</classname></emphasis> or <emphasis><classname alt="boost::container::small_vector">small_vector</classname></emphasis>).</para><para>Using vector-like sequence containers means that inserting a new element into a <classname alt="boost::container::flat_multimap">flat_multimap</classname> might invalidate previous iterators and references (unless that sequence container is <emphasis><classname alt="boost::container::stable_vector">stable_vector</classname></emphasis> or a similar container that offers stable pointers and references). Similarly, erasing an element might invalidate iterators and references pointing to elements that come after (their keys are bigger) the erased element.</para><para>This container provides random-access iterators.</para><para>
  632. </para></description><typedef name="key_type"><type>Key</type></typedef>
  633. <typedef name="mapped_type"><type>T</type></typedef>
  634. <typedef name="key_compare"><type>Compare</type></typedef>
  635. <typedef name="value_type"><type>std::pair&lt; Key, T &gt;</type></typedef>
  636. <typedef name="sequence_type"><type>implementation_defined</type></typedef>
  637. <typedef name="allocator_type"><type>sequence_type::allocator_type</type></typedef>
  638. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  639. <typedef name="pointer"><type>sequence_type::pointer</type></typedef>
  640. <typedef name="const_pointer"><type>sequence_type::const_pointer</type></typedef>
  641. <typedef name="reference"><type>sequence_type::reference</type></typedef>
  642. <typedef name="const_reference"><type>sequence_type::const_reference</type></typedef>
  643. <typedef name="size_type"><type>sequence_type::size_type</type></typedef>
  644. <typedef name="difference_type"><type>sequence_type::difference_type</type></typedef>
  645. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  646. <typedef name="value_compare"><type>implementation_defined</type></typedef>
  647. <typedef name="iterator"><type>sequence_type::iterator</type></typedef>
  648. <typedef name="const_iterator"><type>sequence_type::const_iterator</type></typedef>
  649. <typedef name="reverse_iterator"><type>sequence_type::reverse_iterator</type></typedef>
  650. <typedef name="const_reverse_iterator"><type>sequence_type::const_reverse_iterator</type></typedef>
  651. <typedef name="movable_value_type"><type>implementation_defined</type></typedef>
  652. <method-group name="public member functions">
  653. <method name="BOOST_STATIC_ASSERT"><type/><parameter name=""><paramtype>(dtl::is_same&lt; std::pair&lt; Key, T &gt;, value_type &gt;::value)</paramtype></parameter></method>
  654. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  655. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  656. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  657. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  658. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  659. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  660. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  661. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  662. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  663. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  664. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  665. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  666. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  667. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  668. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  669. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  670. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  671. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  672. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  673. <method name="reserve"><type>void</type><parameter name="cnt"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), or the underlying container has no <computeroutput>reserve</computeroutput> member, this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Note</emphasis>: If capacity() is less than "cnt", iterators and references to to values might be invalidated. </para></description></method>
  674. <method name="shrink_to_fit"><type>void</type><purpose><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created </purpose><description><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  675. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  676. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  677. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  678. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  679. <method name="emplace"><type>iterator</type><template>
  680. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  681. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  682. <method name="emplace_hint"><type>iterator</type><template>
  683. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  684. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant time if the value is to be inserted before p) plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  685. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  686. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move-constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  687. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>impl_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move-constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  688. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant time if the value is to be inserted before p) plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  689. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant time if the value is to be inserted before p) plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  690. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>impl_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant time if the value is to be inserted before p) plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  691. <method name="insert"><type>void</type><template>
  692. <template-type-parameter name="InputIterator"/>
  693. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) .</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  694. <method name="insert"><type>void</type><template>
  695. <template-type-parameter name="InputIterator"/>
  696. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) if and only if there is no element with key equivalent to the key of that element. This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  697. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) .</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  698. <method name="insert"><type>void</type><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) if and only if there is no element with key equivalent to the key of that element. This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  699. <method name="merge"><type>void</type><template>
  700. <template-type-parameter name="C2"/>
  701. </template><parameter name="source"><paramtype><classname>flat_multimap</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  702. <method name="merge"><type>void</type><template>
  703. <template-type-parameter name="C2"/>
  704. </template><parameter name="source"><paramtype><classname>flat_multimap</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  705. <method name="merge"><type>void</type><template>
  706. <template-type-parameter name="C2"/>
  707. </template><parameter name="source"><paramtype><classname>flat_map</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  708. <method name="merge"><type>void</type><template>
  709. <template-type-parameter name="C2"/>
  710. </template><parameter name="source"><paramtype><classname>flat_map</classname>&lt; Key, T, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  711. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements with keys bigger than p</para><para><emphasis role="bold">Note</emphasis>: Invalidates elements with keys not less than the erased element. </para></description></method>
  712. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  713. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: size()*N where N is the distance from first to last.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  714. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  715. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  716. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  717. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  718. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  719. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  720. <method name="find"><type>iterator</type><template>
  721. <template-type-parameter name="K"/>
  722. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  723. <method name="find" cv="const"><type>const_iterator</type><template>
  724. <template-type-parameter name="K"/>
  725. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  726. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  727. <method name="count" cv="const"><type>size_type</type><template>
  728. <template-type-parameter name="K"/>
  729. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  730. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  731. <method name="contains" cv="const"><type>bool</type><template>
  732. <template-type-parameter name="K"/>
  733. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  734. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  735. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  736. <method name="lower_bound"><type>iterator</type><template>
  737. <template-type-parameter name="K"/>
  738. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  739. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  740. <template-type-parameter name="K"/>
  741. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  742. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  743. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  744. <method name="upper_bound"><type>iterator</type><template>
  745. <template-type-parameter name="K"/>
  746. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  747. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  748. <template-type-parameter name="K"/>
  749. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  750. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  751. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  752. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  753. <template-type-parameter name="K"/>
  754. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  755. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  756. <template-type-parameter name="K"/>
  757. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  758. <method name="extract_sequence"><type>sequence_type</type><description><para><emphasis role="bold">Effects</emphasis>: Extracts the internal sequence container.</para><para><emphasis role="bold">Complexity</emphasis>: Same as the move constructor of sequence_type, usually constant.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;empty()</para><para><emphasis role="bold">Throws</emphasis>: If secuence_type's move constructor throws </para></description></method>
  759. <method name="adopt_sequence"><type>void</type><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(NlogN) with N = seq.size()</para><para><emphasis role="bold">Throws</emphasis>: If the comparison or the move constructor throws </para></description></method>
  760. <method name="adopt_sequence"><type>void</type><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: seq shall be ordered according to this-&gt;compare().</para><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(1)</para><para><emphasis role="bold">Throws</emphasis>: If the move assignment throws </para></description></method>
  761. </method-group>
  762. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; AllocatorOrContainer &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty <classname alt="boost::container::flat_map">flat_map</classname>.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  763. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  764. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object .</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  765. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  766. <constructor><template>
  767. <template-type-parameter name="InputIterator"/>
  768. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  769. <constructor><template>
  770. <template-type-parameter name="InputIterator"/>
  771. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  772. <constructor><template>
  773. <template-type-parameter name="InputIterator"/>
  774. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  775. <constructor><template>
  776. <template-type-parameter name="InputIterator"/>
  777. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  778. <constructor><template>
  779. <template-type-parameter name="InputIterator"/>
  780. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  781. <constructor><template>
  782. <template-type-parameter name="InputIterator"/>
  783. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  784. <constructor><template>
  785. <template-type-parameter name="InputIterator"/>
  786. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and allocator, and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  787. <constructor><template>
  788. <template-type-parameter name="InputIterator"/>
  789. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  790. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  791. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  792. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  793. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_map">flat_map</classname> using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  794. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> and inserts elements from the ordered range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  795. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and inserts elements from the ordered range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  796. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified comparison object and allocator, and inserts elements from the ordered range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  797. <constructor><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::flat_multimap">flat_multimap</classname>.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  798. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>flat_multimap</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a <classname alt="boost::container::flat_multimap">flat_multimap</classname>. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  799. <constructor><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  800. <constructor><parameter name="x"><paramtype><classname>flat_multimap</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a <classname alt="boost::container::flat_multimap">flat_multimap</classname> using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  801. <copy-assignment><type><classname>flat_multimap</classname> &amp;</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  802. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>flat_multimap</classname> &amp;</type><parameter name="x"><paramtype><classname>flat_multimap</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: this-&gt;swap(x.get()).</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></copy-assignment>
  803. <copy-assignment><type><classname>flat_multimap</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assign content of il to *this</para><para><emphasis role="bold">Complexity</emphasis>: Linear in il.size(). </para></description></copy-assignment>
  804. <method-group name="friend functions">
  805. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  806. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  807. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  808. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  809. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  810. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  811. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>flat_multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>flat_multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  812. </method-group>
  813. </class>
  814. <function name="flat_map"><type/><template>
  815. <template-type-parameter name="InputIterator"/>
  816. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  817. <function name="flat_map"><type/><template>
  818. <template-type-parameter name="InputIterator"/>
  819. <template-type-parameter name="AllocatorOrCompare"/>
  820. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  821. <function name="flat_map"><type/><template>
  822. <template-type-parameter name="InputIterator"/>
  823. <template-type-parameter name="Compare"/>
  824. <template-type-parameter name="Allocator"/>
  825. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  826. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  827. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  828. <function name="flat_map"><type/><template>
  829. <template-type-parameter name="InputIterator"/>
  830. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  831. <function name="flat_map"><type/><template>
  832. <template-type-parameter name="InputIterator"/>
  833. <template-type-parameter name="AllocatorOrCompare"/>
  834. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  835. <function name="flat_map"><type/><template>
  836. <template-type-parameter name="InputIterator"/>
  837. <template-type-parameter name="Compare"/>
  838. <template-type-parameter name="Allocator"/>
  839. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  840. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  841. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  842. <function name="flat_multimap"><type/><template>
  843. <template-type-parameter name="InputIterator"/>
  844. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  845. <function name="flat_multimap"><type/><template>
  846. <template-type-parameter name="InputIterator"/>
  847. <template-type-parameter name="AllocatorOrCompare"/>
  848. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  849. <function name="flat_multimap"><type/><template>
  850. <template-type-parameter name="InputIterator"/>
  851. <template-type-parameter name="Compare"/>
  852. <template-type-parameter name="Allocator"/>
  853. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  854. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  855. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  856. <function name="flat_multimap"><type/><template>
  857. <template-type-parameter name="InputIterator"/>
  858. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  859. <function name="flat_multimap"><type/><template>
  860. <template-type-parameter name="InputIterator"/>
  861. <template-type-parameter name="AllocatorOrCompare"/>
  862. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  863. <function name="flat_multimap"><type/><template>
  864. <template-type-parameter name="InputIterator"/>
  865. <template-type-parameter name="Compare"/>
  866. <template-type-parameter name="Allocator"/>
  867. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  868. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  869. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  870. </namespace>
  871. </namespace>
  872. </header>
  873. <header name="boost/container/pmr/flat_map.hpp">
  874. <namespace name="boost">
  875. <namespace name="container">
  876. <namespace name="pmr">
  877. <struct name="flat_map_of"><template>
  878. <template-type-parameter name="Key"/>
  879. <template-type-parameter name="T"/>
  880. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  881. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::flat_map">flat_map</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::flat_map</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; Key, T &gt; &gt; &gt;</type></typedef>
  882. </struct><struct name="flat_multimap_of"><template>
  883. <template-type-parameter name="Key"/>
  884. <template-type-parameter name="T"/>
  885. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  886. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::flat_multimap">flat_multimap</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::flat_multimap</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; Key, T &gt; &gt; &gt;</type></typedef>
  887. </struct><typedef name="flat_map"><type><classname>boost::container::flat_map</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; Key, T &gt; &gt; &gt;</type></typedef>
  888. <typedef name="flat_multimap"><type><classname>boost::container::flat_multimap</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; Key, T &gt; &gt; &gt;</type></typedef>
  889. </namespace>
  890. </namespace>
  891. </namespace>
  892. </header>
  893. <header name="boost/container/flat_set.hpp">
  894. <namespace name="boost">
  895. <namespace name="container">
  896. <class name="flat_multiset"><template>
  897. <template-type-parameter name="Key"><purpose><para>is the type to be inserted in the multiset, which is also the key_type </para></purpose></template-type-parameter>
  898. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the comparison functor used to order keys </para></purpose></template-type-parameter>
  899. <template-type-parameter name="AllocatorOrContainer"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt;Key&gt;</default><purpose><para>is either:<itemizedlist>
  900. <listitem><para>The allocator to allocate <computeroutput>value_type</computeroutput>s (e.g. <emphasis>allocator&lt; std::pair&lt;Key, T&gt; &gt; </emphasis>). (in this case <emphasis>sequence_type</emphasis> will be vector&lt;value_type, AllocatorOrContainer&gt;)</para>
  901. </listitem><listitem><para>The SequenceContainer to be used as the underlying <emphasis>sequence_type</emphasis>. It must be a vector-like sequence container with random-access iterators. </para>
  902. </listitem></itemizedlist>
  903. </para></purpose></template-type-parameter>
  904. </template><description><para><classname alt="boost::container::flat_multiset">flat_multiset</classname> is a Sorted Associative Container that stores objects of type Key and can store multiple copies of the same key value.</para><para><classname alt="boost::container::flat_multiset">flat_multiset</classname> is similar to std::multiset but it's implemented by as an ordered sequence container. The underlying sequence container is by default <emphasis>vector</emphasis> but it can also work user-provided vector-like SequenceContainers (like <emphasis><classname alt="boost::container::static_vector">static_vector</classname></emphasis> or <emphasis><classname alt="boost::container::small_vector">small_vector</classname></emphasis>).</para><para>Using vector-like sequence containers means that inserting a new element into a <classname alt="boost::container::flat_multiset">flat_multiset</classname> might invalidate previous iterators and references (unless that sequence container is <emphasis><classname alt="boost::container::stable_vector">stable_vector</classname></emphasis> or a similar container that offers stable pointers and references). Similarly, erasing an element might invalidate iterators and references pointing to elements that come after (their keys are bigger) the erased element.</para><para>This container provides random-access iterators.</para><para>
  905. </para></description><typedef name="key_type"><type>Key</type></typedef>
  906. <typedef name="key_compare"><type>Compare</type></typedef>
  907. <typedef name="value_type"><type>Key</type></typedef>
  908. <typedef name="sequence_type"><type>implementation_defined</type></typedef>
  909. <typedef name="allocator_type"><type>sequence_type::allocator_type</type></typedef>
  910. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  911. <typedef name="pointer"><type>sequence_type::pointer</type></typedef>
  912. <typedef name="const_pointer"><type>sequence_type::const_pointer</type></typedef>
  913. <typedef name="reference"><type>sequence_type::reference</type></typedef>
  914. <typedef name="const_reference"><type>sequence_type::const_reference</type></typedef>
  915. <typedef name="size_type"><type>sequence_type::size_type</type></typedef>
  916. <typedef name="difference_type"><type>sequence_type::difference_type</type></typedef>
  917. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  918. <typedef name="value_compare"><type>implementation_defined</type></typedef>
  919. <typedef name="iterator"><type>sequence_type::iterator</type></typedef>
  920. <typedef name="const_iterator"><type>sequence_type::const_iterator</type></typedef>
  921. <typedef name="reverse_iterator"><type>sequence_type::reverse_iterator</type></typedef>
  922. <typedef name="const_reverse_iterator"><type>sequence_type::const_reverse_iterator</type></typedef>
  923. <method-group name="public member functions">
  924. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  925. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  926. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  927. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  928. <method name="begin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  929. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  930. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  931. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  932. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  933. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  934. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  935. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  936. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  937. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  938. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  939. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  940. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  941. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  942. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  943. <method name="reserve"><type>void</type><parameter name="cnt"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), or the underlying container has no <computeroutput>reserve</computeroutput> member, this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Note</emphasis>: If capacity() is less than "cnt", iterators and references to to values might be invalidated. </para></description></method>
  944. <method name="shrink_to_fit"><type>void</type><purpose><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created </purpose><description><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or Key's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  945. <method name="emplace"><type>iterator</type><template>
  946. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  947. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type Key constructed with std::forward&lt;Args&gt;(args)... and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  948. <method name="emplace_hint"><type>iterator</type><template>
  949. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  950. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type Key constructed with std::forward&lt;Args&gt;(args)... in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  951. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  952. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  953. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  954. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  955. <method name="insert"><type>void</type><template>
  956. <template-type-parameter name="InputIterator"/>
  957. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) .</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  958. <method name="insert"><type>void</type><template>
  959. <template-type-parameter name="InputIterator"/>
  960. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this and must be ordered according to the predicate.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) .This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. If an element is inserted it might invalidate elements. </para></description></method>
  961. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  962. <method name="insert"><type>void</type><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: Range [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. If an element is inserted it might invalidate elements. </para></description></method>
  963. <method name="merge"><type>void</type><template>
  964. <template-type-parameter name="C2"/>
  965. </template><parameter name="source"><paramtype><classname>flat_multiset</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  966. <method name="merge"><type>void</type><template>
  967. <template-type-parameter name="C2"/>
  968. </template><parameter name="source"><paramtype><classname>flat_multiset</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  969. <method name="merge"><type>void</type><template>
  970. <template-type-parameter name="C2"/>
  971. </template><parameter name="source"><paramtype><classname>flat_set</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  972. <method name="merge"><type>void</type><template>
  973. <template-type-parameter name="C2"/>
  974. </template><parameter name="source"><paramtype><classname>flat_set</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  975. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements with keys bigger than p</para><para><emphasis role="bold">Note</emphasis>: Invalidates elements with keys not less than the erased element. </para></description></method>
  976. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  977. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: size()*N where N is the distance from first to last.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  978. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  979. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  980. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  981. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  982. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  983. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  984. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  985. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  986. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  987. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  988. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  989. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  990. <method name="contains" cv="const"><type>bool</type><template>
  991. <template-type-parameter name="K"/>
  992. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  993. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  994. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  995. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  996. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  997. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  998. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  999. <method name="extract_sequence"><type>sequence_type</type><description><para><emphasis role="bold">Effects</emphasis>: Extracts the internal sequence container.</para><para><emphasis role="bold">Complexity</emphasis>: Same as the move constructor of sequence_type, usually constant.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;empty()</para><para><emphasis role="bold">Throws</emphasis>: If secuence_type's move constructor throws </para></description></method>
  1000. <method name="adopt_sequence"><type>void</type><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(NlogN) with N = seq.size()</para><para><emphasis role="bold">Throws</emphasis>: If the comparison or the move constructor throws </para></description></method>
  1001. <method name="adopt_sequence"><type>void</type><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: seq shall be ordered according to this-&gt;compare()</para><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(1)</para><para><emphasis role="bold">Throws</emphasis>: If the move assignment throws </para></description></method>
  1002. </method-group>
  1003. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; AllocatorOrContainer &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty container.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1004. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1005. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1006. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1007. <constructor><template>
  1008. <template-type-parameter name="InputIterator"/>
  1009. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1010. <constructor><template>
  1011. <template-type-parameter name="InputIterator"/>
  1012. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1013. <constructor><template>
  1014. <template-type-parameter name="InputIterator"/>
  1015. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1016. <constructor><template>
  1017. <template-type-parameter name="InputIterator"/>
  1018. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1019. <constructor><template>
  1020. <template-type-parameter name="InputIterator"/>
  1021. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multiset">flat_multiset</classname> and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1022. <constructor><template>
  1023. <template-type-parameter name="InputIterator"/>
  1024. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multiset">flat_multiset</classname> using the specified comparison object and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1025. <constructor><template>
  1026. <template-type-parameter name="InputIterator"/>
  1027. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multiset">flat_multiset</classname> using the specified comparison object and allocator, and inserts elements from the ordered range [first, last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1028. <constructor><template>
  1029. <template-type-parameter name="InputIterator"/>
  1030. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty <classname alt="boost::container::flat_multiset">flat_multiset</classname> using the specified allocator and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1031. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty container.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1032. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1033. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1034. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1035. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty containerand inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1036. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1037. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1038. <constructor><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs the container.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1039. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>flat_multiset</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs thecontainer. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  1040. <constructor><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a container using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1041. <constructor><parameter name="x"><paramtype><classname>flat_multiset</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a container using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise </para></description></constructor>
  1042. <copy-assignment><type><classname>flat_multiset</classname> &amp;</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  1043. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>flat_multiset</classname> &amp;</type><parameter name="x"><paramtype><classname>flat_multiset</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  1044. <copy-assignment><type><classname>flat_multiset</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy all elements from il to *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in il.size(). </para></description></copy-assignment>
  1045. <method-group name="friend functions">
  1046. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1047. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1048. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1049. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1050. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1051. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1052. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>flat_multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>flat_multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1053. </method-group>
  1054. </class><class name="flat_set"><template>
  1055. <template-type-parameter name="Key"><purpose><para>is the type to be inserted in the set, which is also the key_type </para></purpose></template-type-parameter>
  1056. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the comparison functor used to order keys </para></purpose></template-type-parameter>
  1057. <template-type-parameter name="AllocatorOrContainer"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt;Key&gt;</default><purpose><para>is either:<itemizedlist>
  1058. <listitem><para>The allocator to allocate <computeroutput>value_type</computeroutput>s (e.g. <emphasis>allocator&lt; std::pair&lt;Key, T&gt; &gt; </emphasis>). (in this case <emphasis>sequence_type</emphasis> will be vector&lt;value_type, AllocatorOrContainer&gt;)</para>
  1059. </listitem><listitem><para>The SequenceContainer to be used as the underlying <emphasis>sequence_type</emphasis>. It must be a vector-like sequence container with random-access iterators. </para>
  1060. </listitem></itemizedlist>
  1061. </para></purpose></template-type-parameter>
  1062. </template><description><para><classname alt="boost::container::flat_set">flat_set</classname> is a Sorted Associative Container that stores objects of type Key. It is also a Unique Associative Container, meaning that no two elements are the same.</para><para><classname alt="boost::container::flat_set">flat_set</classname> is similar to std::set but it's implemented by as an ordered sequence container. The underlying sequence container is by default <emphasis>vector</emphasis> but it can also work user-provided vector-like SequenceContainers (like <emphasis><classname alt="boost::container::static_vector">static_vector</classname></emphasis> or <emphasis><classname alt="boost::container::small_vector">small_vector</classname></emphasis>).</para><para>Using vector-like sequence containers means that inserting a new element into a <classname alt="boost::container::flat_set">flat_set</classname> might invalidate previous iterators and references (unless that sequence container is <emphasis><classname alt="boost::container::stable_vector">stable_vector</classname></emphasis> or a similar container that offers stable pointers and references). Similarly, erasing an element might invalidate iterators and references pointing to elements that come after (their keys are bigger) the erased element.</para><para>This container provides random-access iterators.</para><para>
  1063. </para></description><typedef name="key_type"><type>Key</type></typedef>
  1064. <typedef name="key_compare"><type>Compare</type></typedef>
  1065. <typedef name="value_type"><type>Key</type></typedef>
  1066. <typedef name="sequence_type"><type>implementation_defined</type></typedef>
  1067. <typedef name="allocator_type"><type>sequence_type::allocator_type</type></typedef>
  1068. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  1069. <typedef name="pointer"><type>sequence_type::pointer</type></typedef>
  1070. <typedef name="const_pointer"><type>sequence_type::const_pointer</type></typedef>
  1071. <typedef name="reference"><type>sequence_type::reference</type></typedef>
  1072. <typedef name="const_reference"><type>sequence_type::const_reference</type></typedef>
  1073. <typedef name="size_type"><type>sequence_type::size_type</type></typedef>
  1074. <typedef name="difference_type"><type>sequence_type::difference_type</type></typedef>
  1075. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  1076. <typedef name="value_compare"><type>implementation_defined</type></typedef>
  1077. <typedef name="iterator"><type>sequence_type::iterator</type></typedef>
  1078. <typedef name="const_iterator"><type>sequence_type::const_iterator</type></typedef>
  1079. <typedef name="reverse_iterator"><type>sequence_type::reverse_iterator</type></typedef>
  1080. <typedef name="const_reverse_iterator"><type>sequence_type::const_reverse_iterator</type></typedef>
  1081. <method-group name="public member functions">
  1082. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1083. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1084. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1085. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1086. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1087. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1088. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1089. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1090. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1091. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1092. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1093. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1094. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1095. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1096. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1097. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1098. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1099. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1100. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1101. <method name="reserve"><type>void</type><parameter name="cnt"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), or the underlying container has no <computeroutput>reserve</computeroutput> member, this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Note</emphasis>: If capacity() is less than "cnt", iterators and references to to values might be invalidated. </para></description></method>
  1102. <method name="shrink_to_fit"><type>void</type><purpose><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created </purpose><description><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or Key's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  1103. <method name="emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  1104. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1105. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object x of type Key constructed with std::forward&lt;Args&gt;(args)... if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1106. <method name="emplace_hint"><type>iterator</type><template>
  1107. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1108. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type Key constructed with std::forward&lt;Args&gt;(args)... in the container if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1109. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1110. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus linear insertion to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1111. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1112. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an element move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time (constant if x is inserted right before p) plus insertion linear to the elements with bigger keys than x.</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1113. <method name="insert"><type>void</type><template>
  1114. <template-type-parameter name="InputIterator"/>
  1115. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1116. <method name="insert"><type>void</type><template>
  1117. <template-type-parameter name="InputIterator"/>
  1118. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this and must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) .This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. If an element is inserted it might invalidate elements. </para></description></method>
  1119. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: N log(N).</para><para><emphasis role="bold">Note</emphasis>: If an element is inserted it might invalidate elements. </para></description></method>
  1120. <method name="insert"><type>void</type><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: Range [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) .This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Complexity</emphasis>: Linear.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. If an element is inserted it might invalidate elements. </para></description></method>
  1121. <method name="merge"><type>void</type><template>
  1122. <template-type-parameter name="C2"/>
  1123. </template><parameter name="source"><paramtype><classname>flat_set</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1124. <method name="merge"><type>void</type><template>
  1125. <template-type-parameter name="C2"/>
  1126. </template><parameter name="source"><paramtype><classname>flat_set</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1127. <method name="merge"><type>void</type><template>
  1128. <template-type-parameter name="C2"/>
  1129. </template><parameter name="source"><paramtype><classname>flat_multiset</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1130. <method name="merge"><type>void</type><template>
  1131. <template-type-parameter name="C2"/>
  1132. </template><parameter name="source"><paramtype><classname>flat_multiset</classname>&lt; Key, C2, AllocatorOrContainer &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1133. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements with keys bigger than p</para><para><emphasis role="bold">Note</emphasis>: Invalidates elements with keys not less than the erased element. </para></description></method>
  1134. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  1135. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: size()*N where N is the distance from first to last.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic search time plus erasure time linear to the elements with bigger keys. </para></description></method>
  1136. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1137. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  1138. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1139. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1140. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1141. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1142. <method name="find"><type>iterator</type><template>
  1143. <template-type-parameter name="K"/>
  1144. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1145. <method name="find" cv="const"><type>const_iterator</type><template>
  1146. <template-type-parameter name="K"/>
  1147. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1148. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  1149. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  1150. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  1151. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  1152. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  1153. <method name="count" cv="const"><type>size_type</type><template>
  1154. <template-type-parameter name="K"/>
  1155. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  1156. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1157. <method name="contains" cv="const"><type>bool</type><template>
  1158. <template-type-parameter name="K"/>
  1159. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1160. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1161. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1162. <method name="lower_bound"><type>iterator</type><template>
  1163. <template-type-parameter name="K"/>
  1164. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1165. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  1166. <template-type-parameter name="K"/>
  1167. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1168. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1169. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1170. <method name="upper_bound"><type>iterator</type><template>
  1171. <template-type-parameter name="K"/>
  1172. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1173. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  1174. <template-type-parameter name="K"/>
  1175. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1176. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1177. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1178. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  1179. <template-type-parameter name="K"/>
  1180. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1181. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  1182. <template-type-parameter name="K"/>
  1183. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1184. <method name="extract_sequence"><type>sequence_type</type><description><para><emphasis role="bold">Effects</emphasis>: Extracts the internal sequence container.</para><para><emphasis role="bold">Complexity</emphasis>: Same as the move constructor of sequence_type, usually constant.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;empty()</para><para><emphasis role="bold">Throws</emphasis>: If secuence_type's move constructor throws </para></description></method>
  1185. <method name="adopt_sequence"><type>void</type><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment. Erases non-unique elements.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(NlogN) with N = seq.size()</para><para><emphasis role="bold">Throws</emphasis>: If the comparison or the move constructor throws </para></description></method>
  1186. <method name="adopt_sequence"><type>void</type><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="seq"><paramtype>sequence_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: seq shall be ordered according to this-&gt;compare() and shall contain unique elements.</para><para><emphasis role="bold">Effects</emphasis>: Discards the internally hold sequence container and adopts the one passed externally using the move assignment.</para><para><emphasis role="bold">Complexity</emphasis>: Assuming O(1) move assignment, O(1)</para><para><emphasis role="bold">Throws</emphasis>: If the move assignment throws </para></description></method>
  1187. </method-group>
  1188. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; AllocatorOrContainer &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty container.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1189. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1190. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1191. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1192. <constructor><template>
  1193. <template-type-parameter name="InputIterator"/>
  1194. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1195. <constructor><template>
  1196. <template-type-parameter name="InputIterator"/>
  1197. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1198. <constructor><template>
  1199. <template-type-parameter name="InputIterator"/>
  1200. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1201. <constructor><template>
  1202. <template-type-parameter name="InputIterator"/>
  1203. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using comp and otherwise N logN, where N is last - first. </para></description></constructor>
  1204. <constructor><template>
  1205. <template-type-parameter name="InputIterator"/>
  1206. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1207. <constructor><template>
  1208. <template-type-parameter name="InputIterator"/>
  1209. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1210. <constructor><template>
  1211. <template-type-parameter name="InputIterator"/>
  1212. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1213. <constructor><template>
  1214. <template-type-parameter name="InputIterator"/>
  1215. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1216. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1217. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1218. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1219. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using comp and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  1220. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1221. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1222. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty container using the specified comparison object and allocator, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1223. <constructor><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs the container.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1224. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>flat_set</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs thecontainer. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  1225. <constructor><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a container using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1226. <constructor><parameter name="x"><paramtype><classname>flat_set</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a container using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise </para></description></constructor>
  1227. <copy-assignment><type><classname>flat_set</classname> &amp;</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  1228. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>flat_set</classname> &amp;</type><parameter name="x"><paramtype><classname>flat_set</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  1229. <copy-assignment><type><classname>flat_set</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy all elements from il to *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in il.size(). </para></description></copy-assignment>
  1230. <method-group name="friend functions">
  1231. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1232. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1233. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1234. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1235. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1236. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1237. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>flat_set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>flat_set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1238. </method-group>
  1239. </class>
  1240. <function name="flat_set"><type/><template>
  1241. <template-type-parameter name="InputIterator"/>
  1242. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1243. <function name="flat_set"><type/><template>
  1244. <template-type-parameter name="InputIterator"/>
  1245. <template-type-parameter name="AllocatorOrCompare"/>
  1246. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1247. <function name="flat_set"><type/><template>
  1248. <template-type-parameter name="InputIterator"/>
  1249. <template-type-parameter name="Compare"/>
  1250. <template-type-parameter name="Allocator"/>
  1251. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1252. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1253. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1254. <function name="flat_set"><type/><template>
  1255. <template-type-parameter name="InputIterator"/>
  1256. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1257. <function name="flat_set"><type/><template>
  1258. <template-type-parameter name="InputIterator"/>
  1259. <template-type-parameter name="AllocatorOrCompare"/>
  1260. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1261. <function name="flat_set"><type/><template>
  1262. <template-type-parameter name="InputIterator"/>
  1263. <template-type-parameter name="Compare"/>
  1264. <template-type-parameter name="Allocator"/>
  1265. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1266. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1267. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1268. <function name="flat_multiset"><type/><template>
  1269. <template-type-parameter name="InputIterator"/>
  1270. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1271. <function name="flat_multiset"><type/><template>
  1272. <template-type-parameter name="InputIterator"/>
  1273. <template-type-parameter name="AllocatorOrCompare"/>
  1274. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1275. <function name="flat_multiset"><type/><template>
  1276. <template-type-parameter name="InputIterator"/>
  1277. <template-type-parameter name="Compare"/>
  1278. <template-type-parameter name="Allocator"/>
  1279. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1280. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1281. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1282. <function name="flat_multiset"><type/><template>
  1283. <template-type-parameter name="InputIterator"/>
  1284. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1285. <function name="flat_multiset"><type/><template>
  1286. <template-type-parameter name="InputIterator"/>
  1287. <template-type-parameter name="AllocatorOrCompare"/>
  1288. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1289. <function name="flat_multiset"><type/><template>
  1290. <template-type-parameter name="InputIterator"/>
  1291. <template-type-parameter name="Compare"/>
  1292. <template-type-parameter name="Allocator"/>
  1293. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1294. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1295. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1296. </namespace>
  1297. </namespace>
  1298. </header>
  1299. <header name="boost/container/pmr/flat_set.hpp">
  1300. <namespace name="boost">
  1301. <namespace name="container">
  1302. <namespace name="pmr">
  1303. <struct name="flat_multiset_of"><template>
  1304. <template-type-parameter name="Key"/>
  1305. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  1306. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::flat_multiset">flat_multiset</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::flat_multiset</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt; &gt;</type></typedef>
  1307. </struct><struct name="flat_set_of"><template>
  1308. <template-type-parameter name="Key"/>
  1309. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  1310. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::flat_set">flat_set</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::flat_set</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt; &gt;</type></typedef>
  1311. </struct><typedef name="flat_set"><type><classname>boost::container::flat_set</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt; &gt;</type></typedef>
  1312. <typedef name="flat_multiset"><type><classname>boost::container::flat_multiset</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt; &gt;</type></typedef>
  1313. </namespace>
  1314. </namespace>
  1315. </namespace>
  1316. </header>
  1317. <header name="boost/container/list.hpp">
  1318. <namespace name="boost">
  1319. <namespace name="container">
  1320. <class name="list"><template>
  1321. <template-type-parameter name="T"><purpose><para>The type of object that is stored in the list </para></purpose></template-type-parameter>
  1322. <template-type-parameter name="Allocator"><default>void</default><purpose><para>The allocator used for all internal memory management, use void for the default allocator </para></purpose></template-type-parameter>
  1323. </template><inherit access="protected">dtl::node_alloc_holder&lt; real_allocator&lt; T, Allocator &gt;::type, dtl::intrusive_list_type&lt; real_allocator&lt; T, Allocator &gt;::type &gt;::type &gt;</inherit><description><para>A list is a doubly linked list. That is, it is a Sequence that supports both forward and backward traversal, and (amortized) constant time insertion and removal of elements at the beginning or the end, or in the middle. Lists have the important property that insertion and splicing do not invalidate iterators to list elements, and that even removal invalidates only the iterators that point to the elements that are removed. The ordering of iterators may be changed (that is, list&lt;T&gt;::iterator might have a different predecessor or successor after a list operation than it did before), but the iterators themselves will not be invalidated or made to point to different elements unless that invalidation or mutation is explicit.</para><para>
  1324. </para></description><typedef name="value_type"><type>T</type></typedef>
  1325. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::pointer</type></typedef>
  1326. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::const_pointer</type></typedef>
  1327. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::reference</type></typedef>
  1328. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::const_reference</type></typedef>
  1329. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::size_type</type></typedef>
  1330. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::difference_type</type></typedef>
  1331. <typedef name="allocator_type"><type>ValueAllocator</type></typedef>
  1332. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  1333. <typedef name="iterator"><type>implementation_defined</type></typedef>
  1334. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  1335. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  1336. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  1337. <method-group name="public member functions">
  1338. <method name="assign"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="val"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the n copies of val to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  1339. <method name="assign"><type>void</type><template>
  1340. <template-type-parameter name="InpIt"/>
  1341. </template><parameter name="first"><paramtype>InpIt</paramtype></parameter><parameter name="last"><paramtype>InpIt</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the range [first, last) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  1342. <method name="assign"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the range [il.begin(), il.end()) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  1343. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: If allocator's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1344. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1345. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1346. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1347. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1348. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1349. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1350. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1351. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1352. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1353. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1354. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1355. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1356. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1357. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1358. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the list contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1359. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1360. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1361. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are value initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  1362. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are copy constructed from x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  1363. <method name="front" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1364. <method name="front" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1365. <method name="back" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1366. <method name="back" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1367. <method name="emplace_back"><type>reference</type><template>
  1368. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1369. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the end of the list.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  1370. <method name="emplace_front"><type>reference</type><template>
  1371. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1372. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the beginning of the list.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  1373. <method name="emplace"><type>iterator</type><template>
  1374. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1375. </template><parameter name="position"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... before p.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  1376. <method name="push_front"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the beginning of the list.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1377. <method name="push_front"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the beginning of the list and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1378. <method name="push_back"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1379. <method name="push_back"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the end of the list and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1380. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of x before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or x's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1381. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a new element before p with x's resources.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1382. <method name="insert"><type>iterator</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts n copies of x before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if n is 0.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  1383. <method name="insert"><type>iterator</type><template>
  1384. <template-type-parameter name="InpIt"/>
  1385. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InpIt</paramtype></parameter><parameter name="last"><paramtype>InpIt</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [first, last) range before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [first, last). </para></description></method>
  1386. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [il.begin(), il.end()) range before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if if.begin() == il.end().</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [il.begin(), il.end()). </para></description></method>
  1387. <method name="pop_front" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element from the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1388. <method name="pop_back" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the last element from the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1389. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Erases the element at p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  1390. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first and last must be valid iterator to elements in *this.</para><para><emphasis role="bold">Effects</emphasis>: Erases the elements pointed by [first, last).</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the distance between first and last. </para></description></method>
  1391. <method name="swap" cv="noexcept(allocator_traits_type::propagate_on_container_swap::value||allocator_traits_type::is_always_equal::value))"><type>void</type><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1392. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the list. </para></description></method>
  1393. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by the list. x != *this. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers all the elements of list x to this list, before the the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  1394. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by the list. x != *this. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers all the elements of list x to this list, before the the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  1395. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><parameter name="i"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. i must point to an element contained in list x. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers the value pointed by i, from list x to this list, before the element pointed by p. No destructors or copy constructors are called. If p == i or p == ++i, this function is a null operation.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  1396. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><parameter name="i"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. i must point to an element contained in list x. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the value pointed by i, from list x to this list, before the element pointed by p. No destructors or copy constructors are called. If p == i or p == ++i, this function is a null operation.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  1397. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. first and last must point to elements contained in list x. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range pointed by first and last from list x to this list, before the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements transferred.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  1398. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. first and last must point to elements contained in list x. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range pointed by first and last from list x to this list, before the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements transferred.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  1399. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. first and last must point to elements contained in list x. n == distance(first, last). this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range pointed by first and last from list x to this list, before the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  1400. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. first and last must point to elements contained in list x. n == distance(first, last). this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range pointed by first and last from list x to this list, before the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  1401. <method name="remove"><type>void</type><parameter name="value"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes all the elements that compare equal to value.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time. It performs exactly size() comparisons for equality.</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  1402. <method name="remove_if"><type>void</type><template>
  1403. <template-type-parameter name="Pred"/>
  1404. </template><parameter name="pred"><paramtype>Pred</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes all the elements for which a specified predicate is satisfied.</para><para><emphasis role="bold">Throws</emphasis>: If pred throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time. It performs exactly size() calls to the predicate.</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  1405. <method name="unique"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes adjacent duplicate elements or adjacent elements that are equal from the list.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time (size()-1 comparisons equality comparisons).</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  1406. <method name="unique"><type>void</type><template>
  1407. <template-type-parameter name="BinaryPredicate"/>
  1408. </template><parameter name="binary_pred"><paramtype>BinaryPredicate</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes adjacent duplicate elements or adjacent elements that satisfy some binary predicate from the list.</para><para><emphasis role="bold">Throws</emphasis>: If pred throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time (size()-1 comparisons calls to pred()).</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  1409. <method name="merge"><type>void</type><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this according to std::less&lt;value_type&gt;. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons. </para></description></method>
  1410. <method name="merge"><type>void</type><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this according to std::less&lt;value_type&gt;. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons. </para></description></method>
  1411. <method name="merge"><type>void</type><template>
  1412. <template-type-parameter name="StrictWeakOrdering"/>
  1413. </template><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><parameter name="comp"><paramtype>const StrictWeakOrdering &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a comparison function that induces a strict weak ordering and both *this and x must be sorted according to that ordering The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comp throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons.</para><para><emphasis role="bold">Note</emphasis>: Iterators and references to *this are not invalidated. </para></description></method>
  1414. <method name="merge"><type>void</type><template>
  1415. <template-type-parameter name="StrictWeakOrdering"/>
  1416. </template><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><parameter name="comp"><paramtype>StrictWeakOrdering</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a comparison function that induces a strict weak ordering and both *this and x must be sorted according to that ordering The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comp throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons.</para><para><emphasis role="bold">Note</emphasis>: Iterators and references to *this are not invalidated. </para></description></method>
  1417. <method name="sort"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: This function sorts the list *this according to std::less&lt;value_type&gt;. The sort is stable, that is, the relative order of equivalent elements is preserved.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Notes</emphasis>: Iterators and references are not invalidated.</para><para><emphasis role="bold">Complexity</emphasis>: The number of comparisons is approximately N log N, where N is the list's size. </para></description></method>
  1418. <method name="sort"><type>void</type><template>
  1419. <template-type-parameter name="StrictWeakOrdering"/>
  1420. </template><parameter name="comp"><paramtype>StrictWeakOrdering</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: This function sorts the list *this according to std::less&lt;value_type&gt;. The sort is stable, that is, the relative order of equivalent elements is preserved.</para><para><emphasis role="bold">Throws</emphasis>: If comp throws.</para><para><emphasis role="bold">Notes</emphasis>: Iterators and references are not invalidated.</para><para><emphasis role="bold">Complexity</emphasis>: The number of comparisons is approximately N log N, where N is the list's size. </para></description></method>
  1421. <method name="reverse" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Reverses the order of elements in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time.</para><para><emphasis role="bold">Note</emphasis>: Iterators and references are not invalidated </para></description></method>
  1422. </method-group>
  1423. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; ValueAllocator &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs a list.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1424. <constructor specifiers="explicit" cv="noexcept"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1425. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list and inserts n value-initialized value_types.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  1426. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  1427. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="value"><paramtype>const T &amp;</paramtype></parameter><parameter name="a"><paramtype>const ValueAllocator &amp;</paramtype><default>ValueAllocator()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  1428. <constructor><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a list.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  1429. <constructor cv="noexcept"><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1430. <constructor><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a list using the specified allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  1431. <constructor><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor sing the specified allocator. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation or value_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  1432. <constructor><template>
  1433. <template-type-parameter name="InpIt"/>
  1434. </template><parameter name="first"><paramtype>InpIt</paramtype></parameter><parameter name="last"><paramtype>InpIt</paramtype></parameter><parameter name="a"><paramtype>const ValueAllocator &amp;</paramtype><default>ValueAllocator()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts a copy of the range [first, last) in the list.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  1435. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const ValueAllocator &amp;</paramtype><default>ValueAllocator()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts a copy of the range [il.begin(), il.end()) in the list.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></constructor>
  1436. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys the list. All stored values are destroyed and used memory is deallocated.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements. </para></description></destructor>
  1437. <copy-assignment><type><classname>list</classname> &amp;</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as x.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == x.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in x. </para></description></copy-assignment>
  1438. <copy-assignment cv="noexcept(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value))"><type><classname>list</classname> &amp;</type><parameter name="x"><paramtype><classname>list</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move assignment. All x's values are transferred to *this.</para><para><emphasis role="bold">Postcondition</emphasis>: x.empty(). *this contains a the elements x had before the function.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  1439. <copy-assignment><type><classname>list</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as il.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == il.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in x. </para></description></copy-assignment>
  1440. <method-group name="friend functions">
  1441. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1442. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1443. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1444. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1445. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1446. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1447. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>list</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>list</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1448. </method-group>
  1449. </class>
  1450. <function name="list"><type/><template>
  1451. <template-type-parameter name="InputIterator"/>
  1452. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1453. <function name="list"><type/><template>
  1454. <template-type-parameter name="InputIterator"/>
  1455. <template-type-parameter name="ValueAllocator"/>
  1456. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>ValueAllocator const &amp;</paramtype></parameter></function>
  1457. </namespace>
  1458. </namespace>
  1459. </header>
  1460. <header name="boost/container/pmr/list.hpp">
  1461. <namespace name="boost">
  1462. <namespace name="container">
  1463. <namespace name="pmr">
  1464. <struct name="list_of"><template>
  1465. <template-type-parameter name="T"/>
  1466. </template><description><para>A portable metafunction to obtain a list that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::list</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  1467. </struct><typedef name="list"><type><classname>boost::container::list</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  1468. </namespace>
  1469. </namespace>
  1470. </namespace>
  1471. </header>
  1472. <header name="boost/container/map.hpp">
  1473. <namespace name="boost">
  1474. <namespace name="container">
  1475. <class name="map"><template>
  1476. <template-type-parameter name="Key"><purpose><para>is the key_type of the map </para></purpose></template-type-parameter>
  1477. <template-type-parameter name="T"><purpose><para>is the <computeroutput>mapped_type</computeroutput> </para></purpose></template-type-parameter>
  1478. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the ordering function for Keys (e.g. <emphasis>std::less&lt;Key&gt;</emphasis>). </para></purpose></template-type-parameter>
  1479. <template-type-parameter name="Allocator"><default>void</default><purpose><para>is the allocator to allocate the <computeroutput>value_type</computeroutput>s (e.g. <emphasis>allocator&lt; std::pair&lt;const Key, T&gt; &gt; </emphasis>). </para></purpose></template-type-parameter>
  1480. <template-type-parameter name="Options"><default>tree_assoc_defaults</default><purpose><para>is an packed option type generated using using <classname alt="boost::container::tree_assoc_options">boost::container::tree_assoc_options</classname>. </para></purpose></template-type-parameter>
  1481. </template><description><para>A map is a kind of associative container that supports unique keys (contains at most one of each key value) and provides for fast retrieval of values of another type T based on the keys. The map class supports bidirectional iterators.</para><para>A map satisfies all of the requirements of a container and of a reversible container and of an associative container. The <computeroutput>value_type</computeroutput> stored by this container is the value_type is std::pair&lt;const Key, T&gt;.</para><para>
  1482. </para></description><typedef name="key_type"><type>Key</type></typedef>
  1483. <typedef name="mapped_type"><type>T</type></typedef>
  1484. <typedef name="allocator_type"><type>base_t::allocator_type</type></typedef>
  1485. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  1486. <typedef name="value_type"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::value_type</type></typedef>
  1487. <typedef name="pointer"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  1488. <typedef name="const_pointer"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  1489. <typedef name="reference"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  1490. <typedef name="const_reference"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  1491. <typedef name="size_type"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  1492. <typedef name="difference_type"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  1493. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  1494. <typedef name="value_compare"><type>implementation_defined</type></typedef>
  1495. <typedef name="key_compare"><type>Compare</type></typedef>
  1496. <typedef name="iterator"><type>implementation_defined</type></typedef>
  1497. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  1498. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  1499. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  1500. <typedef name="nonconst_value_type"><type>std::pair&lt; key_type, mapped_type &gt;</type></typedef>
  1501. <typedef name="movable_value_type"><type>implementation_defined</type></typedef>
  1502. <typedef name="node_type"><type>implementation_defined</type></typedef>
  1503. <typedef name="insert_return_type"><type>implementation_defined</type></typedef>
  1504. <method-group name="public member functions">
  1505. <method name="BOOST_STATIC_ASSERT"><type/><parameter name=""><paramtype>(dtl::is_same&lt; typename allocator_type::value_type, std::pair&lt; const Key, T &gt; &gt;::value)</paramtype></parameter></method>
  1506. <method name="get_allocator" cv="const"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1507. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1508. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1509. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1510. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1511. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1512. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1513. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1514. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1515. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1516. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1517. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1518. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1519. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1520. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1521. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1522. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1523. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1524. <method name="operator[]"><type>mapped_type &amp;</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If there is no key equivalent to x in the map, inserts value_type(x, T()) into the map.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the mapped_type corresponding to x in *this.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1525. <method name="operator[]"><type>mapped_type &amp;</type><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If there is no key equivalent to x in the map, inserts value_type(boost::move(x), T()) into the map (the key is move-constructed)</para><para><emphasis role="bold">Returns</emphasis>: A reference to the mapped_type corresponding to x in *this.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1526. <method name="insert_or_assign"><type>std::pair&lt; iterator, bool &gt;</type><template>
  1527. <template-type-parameter name="M"/>
  1528. </template><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, forward&lt;M&gt;(obj)).</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para><emphasis role="bold">Returns</emphasis>: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in the size of the container. </para></description></method>
  1529. <method name="insert_or_assign"><type>std::pair&lt; iterator, bool &gt;</type><template>
  1530. <template-type-parameter name="M"/>
  1531. </template><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, move(obj)).</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para><emphasis role="bold">Returns</emphasis>: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in the size of the container. </para></description></method>
  1532. <method name="insert_or_assign"><type>iterator</type><template>
  1533. <template-type-parameter name="M"/>
  1534. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, forward&lt;M&gt;(obj)) and the new element to the container as close as possible to the position just before hint.</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para><emphasis role="bold">Returns</emphasis>: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in the size of the container in general, but amortized constant if the new element is inserted just before hint. </para></description></method>
  1535. <method name="insert_or_assign"><type>iterator</type><template>
  1536. <template-type-parameter name="M"/>
  1537. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="obj"><paramtype>M &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If a key equivalent to k already exists in the container, assigns forward&lt;M&gt;(obj) to the mapped_type corresponding to the key k. If the key does not exist, inserts the new value as if by insert, constructing it from value_type(k, move(obj)) and the new element to the container as close as possible to the position just before hint.</para><para>No iterators or references are invalidated. If the insertion is successful, pointers and references to the element obtained while it is held in the node handle are invalidated, and pointers and references obtained to that element before it was extracted become valid.</para><para><emphasis role="bold">Returns</emphasis>: The bool component is true if the insertion took place and false if the assignment took place. The iterator component is pointing at the element that was inserted or updated.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in the size of the container in general, but amortized constant if the new element is inserted just before hint. </para></description></method>
  1538. <method name="at"><type>T &amp;</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A reference to the element whose key is equivalent to x. Throws: An exception object of type out_of_range if no such element is present. <emphasis role="bold">Complexity</emphasis>: logarithmic. </para></description></method>
  1539. <method name="at" cv="const"><type>const T &amp;</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A reference to the element whose key is equivalent to x. Throws: An exception object of type out_of_range if no such element is present. <emphasis role="bold">Complexity</emphasis>: logarithmic. </para></description></method>
  1540. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1541. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>const nonconst_value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type created from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1542. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>nonconst_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1543. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>movable_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1544. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a new value from x if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1545. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1546. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>nonconst_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a new value from x if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1547. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>movable_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a new value from x if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1548. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const nonconst_value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1549. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an element move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1550. <method name="insert"><type>void</type><template>
  1551. <template-type-parameter name="InputIterator"/>
  1552. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from first to last) </para></description></method>
  1553. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end()) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from il.begin() to il.end()) </para></description></method>
  1554. <method name="insert"><type>insert_return_type</type><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: nh is empty or this-&gt;get_allocator() == nh.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: If nh is empty, has no effect. Otherwise, inserts the element owned by nh if and only if there is no element in the container with a key equivalent to nh.key().</para><para><emphasis role="bold">Returns</emphasis>: If nh is empty, insert_return_type.inserted is false, insert_return_type.position is end(), and insert_return_type.node is empty. Otherwise if the insertion took place, insert_return_type.inserted is true, insert_return_type.position points to the inserted element, and insert_return_type.node is empty; if the insertion failed, insert_return_type.inserted is false, insert_return_type.node has the previous value of nh, and insert_return_type.position points to an element with a key equivalent to nh.key().</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1555. <method name="insert"><type>insert_return_type</type><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>insert(node_type &amp;&amp; nh)</computeroutput> but the element is inserted as close as possible to the position just prior to "hint".</para><para><emphasis role="bold">Complexity</emphasis>: logarithmic in general, but amortized constant if the element is inserted right before "hint". </para></description></method>
  1556. <method name="emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  1557. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1558. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object x of type T constructed with std::forward&lt;Args&gt;(args)... in the container if and only if there is no element in the container with an equivalent key. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1559. <method name="emplace_hint"><type>iterator</type><template>
  1560. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1561. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the container if and only if there is no element in the container with an equivalent key. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1562. <method name="try_emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  1563. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1564. </template><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion took place. The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1565. <method name="try_emplace"><type>iterator</type><template>
  1566. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1567. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(k), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if value is inserted right before p. </para></description></method>
  1568. <method name="try_emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  1569. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1570. </template><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion took place. The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1571. <method name="try_emplace"><type>iterator</type><template>
  1572. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1573. </template><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="k"><paramtype>key_type &amp;&amp;</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: value_type shall be EmplaceConstructible into map from piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Effects</emphasis>: If the map already contains an element whose key is equivalent to k, there is no effect. Otherwise inserts an object of type value_type constructed with piecewise_construct, forward_as_tuple(move(k)), forward_as_tuple(forward&lt;Args&gt;(args)...).</para><para><emphasis role="bold">Returns</emphasis>: The returned iterator points to the map element whose key is equivalent to k.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if value is inserted right before p. </para></description></method>
  1574. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time </para></description></method>
  1575. <method name="erase" cv="noexcept"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()) + count(k) </para></description></method>
  1576. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+N where N is the distance from first to last. </para></description></method>
  1577. <method name="extract"><type>node_type</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element in the container with key equivalent to k.</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element if found, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1578. <method name="extract"><type>node_type</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the element pointed to by "position".</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant. </para></description></method>
  1579. <method name="merge"><type>void</type><template>
  1580. <template-type-parameter name="C2"/>
  1581. </template><parameter name="source"><paramtype><classname>map</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1582. <method name="merge"><type>void</type><template>
  1583. <template-type-parameter name="C2"/>
  1584. </template><parameter name="source"><paramtype><classname>map</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1585. <method name="merge"><type>void</type><template>
  1586. <template-type-parameter name="C2"/>
  1587. </template><parameter name="source"><paramtype><classname>multimap</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1588. <method name="merge"><type>void</type><template>
  1589. <template-type-parameter name="C2"/>
  1590. </template><parameter name="source"><paramtype><classname>multimap</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1591. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. <emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  1592. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1593. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1594. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1595. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1596. <method name="find"><type>iterator</type><template>
  1597. <template-type-parameter name="K"/>
  1598. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1599. <method name="find" cv="const"><type>const_iterator</type><template>
  1600. <template-type-parameter name="K"/>
  1601. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1602. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  1603. <method name="count" cv="const"><type>size_type</type><template>
  1604. <template-type-parameter name="K"/>
  1605. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  1606. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1607. <method name="contains" cv="const"><type>bool</type><template>
  1608. <template-type-parameter name="K"/>
  1609. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1610. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1611. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1612. <method name="lower_bound"><type>iterator</type><template>
  1613. <template-type-parameter name="K"/>
  1614. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1615. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  1616. <template-type-parameter name="K"/>
  1617. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1618. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1619. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1620. <method name="upper_bound"><type>iterator</type><template>
  1621. <template-type-parameter name="K"/>
  1622. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1623. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  1624. <template-type-parameter name="K"/>
  1625. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1626. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1627. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1628. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  1629. <template-type-parameter name="K"/>
  1630. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1631. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  1632. <template-type-parameter name="K"/>
  1633. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1634. <method name="rebalance"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.</para><para><emphasis role="bold">Complexity</emphasis>: Linear </para></description></method>
  1635. </method-group>
  1636. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty map.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1637. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1638. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1639. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1640. <constructor><template>
  1641. <template-type-parameter name="InputIterator"/>
  1642. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1643. <constructor><template>
  1644. <template-type-parameter name="InputIterator"/>
  1645. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1646. <constructor><template>
  1647. <template-type-parameter name="InputIterator"/>
  1648. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1649. <constructor><template>
  1650. <template-type-parameter name="InputIterator"/>
  1651. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1652. <constructor><template>
  1653. <template-type-parameter name="InputIterator"/>
  1654. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1655. <constructor><template>
  1656. <template-type-parameter name="InputIterator"/>
  1657. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1658. <constructor><template>
  1659. <template-type-parameter name="InputIterator"/>
  1660. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and allocator, and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1661. <constructor><template>
  1662. <template-type-parameter name="InputIterator"/>
  1663. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified allocator object and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1664. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted according to the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1665. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1666. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1667. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1668. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1669. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1670. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and allocator, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1671. <constructor><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a map.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1672. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>map</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a map. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  1673. <constructor><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a map using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1674. <constructor><parameter name="x"><paramtype><classname>map</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a map using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if x == x.get_allocator(), linear otherwise.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  1675. <copy-assignment><type><classname>map</classname> &amp;</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  1676. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>map</classname> &amp;</type><parameter name="x"><paramtype><classname>map</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: this-&gt;swap(x.get()).</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  1677. <copy-assignment><type><classname>map</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assign content of il to *this. </para></description></copy-assignment>
  1678. <method-group name="friend functions">
  1679. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1680. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1681. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1682. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1683. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1684. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1685. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>map</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>map</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1686. </method-group>
  1687. </class><class name="multimap"><template>
  1688. <template-type-parameter name="Key"><purpose><para>is the key_type of the map </para></purpose></template-type-parameter>
  1689. <template-type-parameter name="T"/>
  1690. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the ordering function for Keys (e.g. <emphasis>std::less&lt;Key&gt;</emphasis>). </para></purpose></template-type-parameter>
  1691. <template-type-parameter name="Allocator"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt; std::pair&lt; const Key, T&gt; &gt;</default><purpose><para>is the allocator to allocate the <computeroutput>value_type</computeroutput>s (e.g. <emphasis>allocator&lt; std::pair&lt;const Key, T&gt; &gt; </emphasis>). </para></purpose></template-type-parameter>
  1692. <template-type-parameter name="Options"><default>tree_assoc_defaults</default><purpose><para>is an packed option type generated using using <classname alt="boost::container::tree_assoc_options">boost::container::tree_assoc_options</classname>. </para></purpose></template-type-parameter>
  1693. </template><description><para>A multimap is a kind of associative container that supports equivalent keys (possibly containing multiple copies of the same key value) and provides for fast retrieval of values of another type T based on the keys. The multimap class supports bidirectional iterators.</para><para>A multimap satisfies all of the requirements of a container and of a reversible container and of an associative container. The <computeroutput>value_type</computeroutput> stored by this container is the value_type is std::pair&lt;const Key, T&gt;.</para><para>
  1694. </para></description><typedef name="key_type"><type>Key</type></typedef>
  1695. <typedef name="mapped_type"><type>T</type></typedef>
  1696. <typedef name="allocator_type"><type>base_t::allocator_type</type></typedef>
  1697. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  1698. <typedef name="value_type"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::value_type</type></typedef>
  1699. <typedef name="pointer"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  1700. <typedef name="const_pointer"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  1701. <typedef name="reference"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  1702. <typedef name="const_reference"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  1703. <typedef name="size_type"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  1704. <typedef name="difference_type"><type><classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  1705. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  1706. <typedef name="value_compare"><type>implementation_defined</type></typedef>
  1707. <typedef name="key_compare"><type>Compare</type></typedef>
  1708. <typedef name="iterator"><type>implementation_defined</type></typedef>
  1709. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  1710. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  1711. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  1712. <typedef name="nonconst_value_type"><type>std::pair&lt; key_type, mapped_type &gt;</type></typedef>
  1713. <typedef name="movable_value_type"><type>implementation_defined</type></typedef>
  1714. <typedef name="node_type"><type>implementation_defined</type></typedef>
  1715. <method-group name="public member functions">
  1716. <method name="BOOST_STATIC_ASSERT"><type/><parameter name=""><paramtype>(dtl::is_same&lt; typename allocator_type::value_type, std::pair&lt; const Key, T &gt; &gt;::value)</paramtype></parameter></method>
  1717. <method name="get_allocator" cv="const"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1718. <method name="get_stored_allocator"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1719. <method name="get_stored_allocator" cv="const"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  1720. <method name="begin"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  1721. <method name="begin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1722. <method name="cbegin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1723. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1724. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1725. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1726. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1727. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1728. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1729. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1730. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1731. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1732. <method name="empty" cv="const"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1733. <method name="size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1734. <method name="max_size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1735. <method name="emplace"><type>iterator</type><template>
  1736. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1737. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1738. <method name="emplace_hint"><type>iterator</type><template>
  1739. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  1740. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1741. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1742. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>const nonconst_value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1743. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>nonconst_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move-constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1744. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>movable_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move-constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1745. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1746. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const nonconst_value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1747. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>nonconst_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1748. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>movable_value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  1749. <method name="insert"><type>void</type><template>
  1750. <template-type-parameter name="InputIterator"/>
  1751. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) .</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from first to last) </para></description></method>
  1752. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(), il.end().</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from il.begin() to il.end()) </para></description></method>
  1753. <method name="insert"><type>iterator</type><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: nh is empty or this-&gt;get_allocator() == nh.get_allocator().</para><para><emphasis role="bold">Effects/Returns</emphasis>: If nh is empty, has no effect and returns end(). Otherwise, inserts the element owned by nh and returns an iterator pointing to the newly inserted element. If a range containing elements with keys equivalent to nh.key() exists, the element is inserted at the end of that range. nh is always emptied.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1754. <method name="insert"><type>iterator</type><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>insert(node_type &amp;&amp; nh)</computeroutput> but the element is inserted as close as possible to the position just prior to "hint".</para><para><emphasis role="bold">Complexity</emphasis>: logarithmic in general, but amortized constant if the element is inserted right before "hint". </para></description></method>
  1755. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time </para></description></method>
  1756. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()) + count(k) </para></description></method>
  1757. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+N where N is the distance from first to last. </para></description></method>
  1758. <method name="extract"><type>node_type</type><parameter name="k"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element in the container with key equivalent to k.</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element if found, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1759. <method name="extract"><type>node_type</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the element pointed to by "position".</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant. </para></description></method>
  1760. <method name="merge"><type>void</type><template>
  1761. <template-type-parameter name="C2"/>
  1762. </template><parameter name="source"><paramtype><classname>multimap</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1763. <method name="merge"><type>void</type><template>
  1764. <template-type-parameter name="C2"/>
  1765. </template><parameter name="source"><paramtype><classname>multimap</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1766. <method name="merge"><type>void</type><template>
  1767. <template-type-parameter name="C2"/>
  1768. </template><parameter name="source"><paramtype><classname>map</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1769. <method name="merge"><type>void</type><template>
  1770. <template-type-parameter name="C2"/>
  1771. </template><parameter name="source"><paramtype><classname>map</classname>&lt; Key, T, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  1772. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1773. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  1774. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1775. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1776. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1777. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1778. <method name="find"><type>iterator</type><template>
  1779. <template-type-parameter name="K"/>
  1780. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1781. <method name="find" cv="const"><type>const_iterator</type><template>
  1782. <template-type-parameter name="K"/>
  1783. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  1784. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  1785. <method name="count" cv="const"><type>size_type</type><template>
  1786. <template-type-parameter name="K"/>
  1787. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  1788. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1789. <method name="contains" cv="const"><type>bool</type><template>
  1790. <template-type-parameter name="K"/>
  1791. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  1792. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1793. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1794. <method name="lower_bound"><type>iterator</type><template>
  1795. <template-type-parameter name="K"/>
  1796. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1797. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  1798. <template-type-parameter name="K"/>
  1799. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1800. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1801. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1802. <method name="upper_bound"><type>iterator</type><template>
  1803. <template-type-parameter name="K"/>
  1804. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1805. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  1806. <template-type-parameter name="K"/>
  1807. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1808. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1809. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1810. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  1811. <template-type-parameter name="K"/>
  1812. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1813. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  1814. <template-type-parameter name="K"/>
  1815. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  1816. <method name="rebalance"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.</para><para><emphasis role="bold">Complexity</emphasis>: Linear </para></description></method>
  1817. </method-group>
  1818. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty multimap.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1819. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified allocator object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1820. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1821. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  1822. <constructor><template>
  1823. <template-type-parameter name="InputIterator"/>
  1824. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1825. <constructor><template>
  1826. <template-type-parameter name="InputIterator"/>
  1827. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1828. <constructor><template>
  1829. <template-type-parameter name="InputIterator"/>
  1830. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1831. <constructor><template>
  1832. <template-type-parameter name="InputIterator"/>
  1833. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  1834. <constructor><template>
  1835. <template-type-parameter name="InputIterator"/>
  1836. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1837. <constructor><template>
  1838. <template-type-parameter name="InputIterator"/>
  1839. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison object and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1840. <constructor><template>
  1841. <template-type-parameter name="InputIterator"/>
  1842. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison object and allocator, and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1843. <constructor><template>
  1844. <template-type-parameter name="InputIterator"/>
  1845. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified allocator and inserts elements from the ordered range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1846. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap and and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1847. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1848. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1849. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multimap using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is il.first() - il.end(). </para></description></constructor>
  1850. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map and inserts elements from the ordered range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1851. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map using the specified comparison object and inserts elements from the ordered range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1852. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty map and inserts elements from the ordered range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  1853. <constructor><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a multimap.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1854. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>multimap</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a multimap. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  1855. <constructor><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a multimap.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  1856. <constructor><parameter name="x"><paramtype><classname>multimap</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a multimap using the specified allocator. Constructs *this using x's resources. <emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  1857. <copy-assignment><type><classname>multimap</classname> &amp;</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  1858. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>multimap</classname> &amp;</type><parameter name="x"><paramtype><classname>multimap</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: this-&gt;swap(x.get()).</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></copy-assignment>
  1859. <copy-assignment><type><classname>multimap</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assign content of il to *this. </para></description></copy-assignment>
  1860. <method-group name="friend functions">
  1861. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1862. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1863. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1864. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1865. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1866. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  1867. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>multimap</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>multimap</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  1868. </method-group>
  1869. </class>
  1870. <function name="map"><type/><template>
  1871. <template-type-parameter name="InputIterator"/>
  1872. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1873. <function name="map"><type/><template>
  1874. <template-type-parameter name="InputIterator"/>
  1875. <template-type-parameter name="AllocatorOrCompare"/>
  1876. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1877. <function name="map"><type/><template>
  1878. <template-type-parameter name="InputIterator"/>
  1879. <template-type-parameter name="Compare"/>
  1880. <template-type-parameter name="Allocator"/>
  1881. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1882. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1883. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1884. <function name="map"><type/><template>
  1885. <template-type-parameter name="InputIterator"/>
  1886. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1887. <function name="map"><type/><template>
  1888. <template-type-parameter name="InputIterator"/>
  1889. <template-type-parameter name="AllocatorOrCompare"/>
  1890. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1891. <function name="map"><type/><template>
  1892. <template-type-parameter name="InputIterator"/>
  1893. <template-type-parameter name="Compare"/>
  1894. <template-type-parameter name="Allocator"/>
  1895. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1896. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1897. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1898. <function name="multimap"><type/><template>
  1899. <template-type-parameter name="InputIterator"/>
  1900. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1901. <function name="multimap"><type/><template>
  1902. <template-type-parameter name="InputIterator"/>
  1903. <template-type-parameter name="AllocatorOrCompare"/>
  1904. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1905. <function name="multimap"><type/><template>
  1906. <template-type-parameter name="InputIterator"/>
  1907. <template-type-parameter name="Compare"/>
  1908. <template-type-parameter name="Allocator"/>
  1909. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1910. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1911. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1912. <function name="multimap"><type/><template>
  1913. <template-type-parameter name="InputIterator"/>
  1914. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  1915. <function name="multimap"><type/><template>
  1916. <template-type-parameter name="InputIterator"/>
  1917. <template-type-parameter name="AllocatorOrCompare"/>
  1918. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  1919. <function name="multimap"><type/><template>
  1920. <template-type-parameter name="InputIterator"/>
  1921. <template-type-parameter name="Compare"/>
  1922. <template-type-parameter name="Allocator"/>
  1923. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  1924. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  1925. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  1926. </namespace>
  1927. </namespace>
  1928. </header>
  1929. <header name="boost/container/pmr/map.hpp">
  1930. <namespace name="boost">
  1931. <namespace name="container">
  1932. <namespace name="pmr">
  1933. <struct name="map_of"><template>
  1934. <template-type-parameter name="Key"/>
  1935. <template-type-parameter name="T"/>
  1936. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  1937. <template-type-parameter name="Options"><default>void</default></template-type-parameter>
  1938. </template><description><para>A portable metafunction to obtain a map that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::map</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; const Key, T &gt; &gt;, Options &gt;</type></typedef>
  1939. </struct><struct name="multimap_of"><template>
  1940. <template-type-parameter name="Key"/>
  1941. <template-type-parameter name="T"/>
  1942. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  1943. <template-type-parameter name="Options"><default>void</default></template-type-parameter>
  1944. </template><description><para>A portable metafunction to obtain a multimap that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::multimap</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; const Key, T &gt; &gt;, Options &gt;</type></typedef>
  1945. </struct><typedef name="map"><type><classname>boost::container::map</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; const Key, T &gt; &gt;, Options &gt;</type></typedef>
  1946. <typedef name="multimap"><type><classname>boost::container::multimap</classname>&lt; Key, T, Compare, <classname>polymorphic_allocator</classname>&lt; std::pair&lt; const Key, T &gt; &gt;, Options &gt;</type></typedef>
  1947. </namespace>
  1948. </namespace>
  1949. </namespace>
  1950. </header>
  1951. <header name="boost/container/new_allocator.hpp">
  1952. <namespace name="boost">
  1953. <namespace name="container">
  1954. <class name="new_allocator"><template>
  1955. <template-type-parameter name="T"/>
  1956. </template><purpose>This class is a reduced STL-compatible allocator that allocates memory using operator new. </purpose><struct name="rebind"><template>
  1957. <template-type-parameter name="T2"/>
  1958. </template><description><para>Obtains an <classname alt="boost::container::new_allocator">new_allocator</classname> that allocates objects of type T2 </para></description><typedef name="other"><type><classname>new_allocator</classname>&lt; T2 &gt;</type></typedef>
  1959. </struct><typedef name="value_type"><type>T</type></typedef>
  1960. <typedef name="pointer"><type>T *</type></typedef>
  1961. <typedef name="const_pointer"><type>const T *</type></typedef>
  1962. <typedef name="reference"><type>T &amp;</type></typedef>
  1963. <typedef name="const_reference"><type>const T &amp;</type></typedef>
  1964. <typedef name="size_type"><type>std::size_t</type></typedef>
  1965. <typedef name="difference_type"><type>std::ptrdiff_t</type></typedef>
  1966. <typedef name="propagate_on_container_move_assignment"><purpose>A integral constant of type bool with value true. </purpose><type>implementation_defined</type></typedef>
  1967. <typedef name="is_always_equal"><purpose>A integral constant of type bool with value true. </purpose><type>implementation_defined</type></typedef>
  1968. <method-group name="public member functions">
  1969. <method name="allocate"><type>pointer</type><parameter name="count"><paramtype>size_type</paramtype></parameter><description><para>Allocates memory for an array of count elements. Throws std::bad_alloc if there is no enough memory </para></description></method>
  1970. <method name="deallocate" cv="noexcept"><type>void</type><parameter name="ptr"><paramtype>pointer</paramtype></parameter><parameter name=""><paramtype>size_type</paramtype></parameter><description><para>Deallocates previously allocated memory. Never throws </para></description></method>
  1971. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para>Returns the maximum number of elements that could be allocated. Never throws </para></description></method>
  1972. </method-group>
  1973. <constructor cv="noexcept"><description><para>Default constructor Never throws </para></description></constructor>
  1974. <constructor cv="noexcept"><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>Constructor from other <classname alt="boost::container::new_allocator">new_allocator</classname>. Never throws </para></description></constructor>
  1975. <copy-assignment cv="noexcept"><type><classname>new_allocator</classname> &amp;</type><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>Copy assignment operator from other <classname alt="boost::container::new_allocator">new_allocator</classname>. Never throws </para></description></copy-assignment>
  1976. <constructor cv="noexcept"><template>
  1977. <template-type-parameter name="T2"/>
  1978. </template><parameter name=""><paramtype>const <classname>new_allocator</classname>&lt; T2 &gt; &amp;</paramtype></parameter><description><para>Constructor from related <classname alt="boost::container::new_allocator">new_allocator</classname>. Never throws </para></description></constructor>
  1979. <method-group name="friend functions">
  1980. <method name="swap" cv="noexcept"><type>friend void</type><parameter name=""><paramtype><classname>new_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype><classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>Swaps two allocators, does nothing because this <classname alt="boost::container::new_allocator">new_allocator</classname> is stateless </para></description></method>
  1981. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>An <classname alt="boost::container::new_allocator">new_allocator</classname> always compares to true, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  1982. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>An <classname alt="boost::container::new_allocator">new_allocator</classname> always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  1983. </method-group>
  1984. </class><class-specialization name="new_allocator"><template>
  1985. </template><specialization><template-arg>void</template-arg></specialization><purpose>Specialization of <classname alt="boost::container::new_allocator">new_allocator</classname> for void types. </purpose><struct name="rebind"><template>
  1986. <template-type-parameter name="T2"/>
  1987. </template><description><para>Obtains an <classname alt="boost::container::new_allocator">new_allocator</classname> that allocates objects of type T2 </para></description><typedef name="other"><type><classname>new_allocator</classname>&lt; T2 &gt;</type></typedef>
  1988. </struct><typedef name="value_type"><type>void</type></typedef>
  1989. <typedef name="pointer"><type>void *</type></typedef>
  1990. <typedef name="const_pointer"><type>const void *</type></typedef>
  1991. <typedef name="propagate_on_container_move_assignment"><purpose>A integral constant of type bool with value true. </purpose><type>implementation_defined</type></typedef>
  1992. <typedef name="is_always_equal"><purpose>A integral constant of type bool with value true. </purpose><type>implementation_defined</type></typedef>
  1993. <method-group name="public member functions">
  1994. </method-group>
  1995. <constructor cv="noexcept"><description><para>Default constructor Never throws </para></description></constructor>
  1996. <constructor cv="noexcept"><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>Constructor from other <classname alt="boost::container::new_allocator">new_allocator</classname>. Never throws </para></description></constructor>
  1997. <copy-assignment cv="noexcept"><type><classname>new_allocator</classname> &amp;</type><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>Copy assignment operator from other <classname alt="boost::container::new_allocator">new_allocator</classname>. Never throws </para></description></copy-assignment>
  1998. <constructor cv="noexcept"><template>
  1999. <template-type-parameter name="T2"/>
  2000. </template><parameter name=""><paramtype>const <classname>new_allocator</classname>&lt; T2 &gt; &amp;</paramtype></parameter><description><para>Constructor from related <classname alt="boost::container::new_allocator">new_allocator</classname>. Never throws </para></description></constructor>
  2001. <method-group name="friend functions">
  2002. <method name="swap" cv="noexcept"><type>friend void</type><parameter name=""><paramtype><classname>new_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype><classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>Swaps two allocators, does nothing because this <classname alt="boost::container::new_allocator">new_allocator</classname> is stateless </para></description></method>
  2003. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>An <classname alt="boost::container::new_allocator">new_allocator</classname> always compares to true, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  2004. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>new_allocator</classname> &amp;</paramtype></parameter><description><para>An <classname alt="boost::container::new_allocator">new_allocator</classname> always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  2005. </method-group>
  2006. </class-specialization>
  2007. </namespace>
  2008. </namespace>
  2009. </header>
  2010. <header name="boost/container/node_allocator.hpp">
  2011. <namespace name="boost">
  2012. <namespace name="container">
  2013. <class name="node_allocator"><template>
  2014. <template-type-parameter name="T"/>
  2015. <template-nontype-parameter name="NodesPerBlock"><type>std::size_t</type><default>NodeAlloc_nodes_per_block</default></template-nontype-parameter>
  2016. </template><description><para>An STL node allocator that uses a modified DlMalloc as memory source.</para><para>This node allocator shares a segregated storage between all instances of <classname alt="boost::container::node_allocator">node_allocator</classname> with equal sizeof(T).</para><para>NodesPerBlock is the number of nodes allocated at once when the allocator runs out of nodes </para></description><struct name="rebind"><template>
  2017. <template-type-parameter name="T2"/>
  2018. </template><description><para>Obtains <classname alt="boost::container::node_allocator">node_allocator</classname> from <classname alt="boost::container::node_allocator">node_allocator</classname> </para></description><typedef name="other"><type><classname>node_allocator</classname>&lt; T2, NodesPerBlock &gt;</type></typedef>
  2019. </struct><typedef name="value_type"><type>T</type></typedef>
  2020. <typedef name="pointer"><type>T *</type></typedef>
  2021. <typedef name="const_pointer"><type>const T *</type></typedef>
  2022. <typedef name="reference"><type>::boost::container::dtl::unvoid_ref&lt; T &gt;::type</type></typedef>
  2023. <typedef name="const_reference"><type>::boost::container::dtl::unvoid_ref&lt; const T &gt;::type</type></typedef>
  2024. <typedef name="size_type"><type>std::size_t</type></typedef>
  2025. <typedef name="difference_type"><type>std::ptrdiff_t</type></typedef>
  2026. <typedef name="version"><type>boost::container::dtl::version_type&lt; self_t, Version &gt;</type></typedef>
  2027. <method-group name="public member functions">
  2028. <method name="max_size" cv="const"><type>size_type</type><description><para>Returns the number of elements that could be allocated. Never throws </para></description></method>
  2029. <method name="allocate"><type>pointer</type><parameter name="count"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype>const void *</paramtype><default>0</default></parameter><description><para>Allocate memory for an array of count elements. Throws std::bad_alloc if there is no enough memory </para></description></method>
  2030. <method name="deallocate" cv="noexcept"><type>void</type><parameter name="ptr"><paramtype>const pointer &amp;</paramtype></parameter><parameter name="count"><paramtype>size_type</paramtype></parameter><description><para>Deallocate allocated memory. Never throws </para></description></method>
  2031. <method name="allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>size_type</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse"><paramtype>pointer &amp;</paramtype></parameter></method>
  2032. <method name="size" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Returns maximum the number of objects the previously allocated memory pointed by p can hold. </para></description></method>
  2033. <method name="allocate_one"><type>pointer</type><description><para>Allocates just one object. Memory allocated with this function must be deallocated only with deallocate_one(). Throws bad_alloc if there is no enough memory </para></description></method>
  2034. <method name="allocate_individual"><type>void</type><parameter name="num_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size == 1. Elements must be individually deallocated with deallocate_one() </para></description></method>
  2035. <method name="deallocate_one" cv="noexcept"><type>void</type><parameter name="p"><paramtype>pointer</paramtype></parameter><description><para>Deallocates memory previously allocated with allocate_one(). You should never use deallocate_one to deallocate memory allocated with other functions different from allocate_one(). Never throws </para></description></method>
  2036. <method name="deallocate_individual" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter></method>
  2037. <method name="allocate_many"><type>void</type><parameter name="elem_size"><paramtype>size_type</paramtype></parameter><parameter name="n_elements"><paramtype>std::size_t</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates many elements of size elem_size. Elements must be individually deallocated with deallocate() </para></description></method>
  2038. <method name="allocate_many"><type>void</type><parameter name="elem_sizes"><paramtype>const size_type *</paramtype></parameter><parameter name="n_elements"><paramtype>size_type</paramtype></parameter><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter><description><para>Allocates n_elements elements, each one of size elem_sizes[i] Elements must be individually deallocated with deallocate() </para></description></method>
  2039. <method name="deallocate_many" cv="noexcept"><type>void</type><parameter name="chain"><paramtype>multiallocation_chain &amp;</paramtype></parameter></method>
  2040. </method-group>
  2041. <constructor cv="noexcept"><purpose>Default constructor. </purpose></constructor>
  2042. <constructor cv="noexcept"><parameter name=""><paramtype>const <classname>node_allocator</classname> &amp;</paramtype></parameter><purpose>Copy constructor from other <classname alt="boost::container::node_allocator">node_allocator</classname>. </purpose></constructor>
  2043. <constructor cv="noexcept"><template>
  2044. <template-type-parameter name="T2"/>
  2045. </template><parameter name=""><paramtype>const <classname>node_allocator</classname>&lt; T2, NodesPerBlock &gt; &amp;</paramtype></parameter><purpose>Copy constructor from related <classname alt="boost::container::node_allocator">node_allocator</classname>. </purpose></constructor>
  2046. <destructor><purpose>Destructor. </purpose></destructor>
  2047. <method-group name="public static functions">
  2048. <method name="deallocate_free_blocks" cv="noexcept" specifiers="static"><type>void</type><purpose>Deallocates all free blocks of the pool. </purpose></method>
  2049. </method-group>
  2050. <method-group name="friend functions">
  2051. <method name="swap" cv="noexcept"><type>friend void</type><parameter name=""><paramtype>self_t &amp;</paramtype></parameter><parameter name=""><paramtype>self_t &amp;</paramtype></parameter><description><para>Swaps allocators. Does not throw. If each allocator is placed in a different memory segment, the result is undefined. </para></description></method>
  2052. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>node_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>node_allocator</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to true, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  2053. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name=""><paramtype>const <classname>node_allocator</classname> &amp;</paramtype></parameter><parameter name=""><paramtype>const <classname>node_allocator</classname> &amp;</paramtype></parameter><description><para>An allocator always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  2054. </method-group>
  2055. <method-group name="private member functions">
  2056. <method name="priv_allocation_command"><type>pointer</type><parameter name="command"><paramtype>allocation_type</paramtype></parameter><parameter name="limit_size"><paramtype>std::size_t</paramtype></parameter><parameter name="prefer_in_recvd_out_size"><paramtype>size_type &amp;</paramtype></parameter><parameter name="reuse"><paramtype>pointer &amp;</paramtype></parameter></method>
  2057. </method-group>
  2058. </class>
  2059. </namespace>
  2060. </namespace>
  2061. </header>
  2062. <header name="boost/container/node_handle.hpp">
  2063. <namespace name="boost">
  2064. <namespace name="container">
  2065. <struct name="insert_return_type_base"><template>
  2066. <template-type-parameter name="Iterator"/>
  2067. <template-type-parameter name="NodeType"/>
  2068. </template><description><para>A class template used to describe the results of inserting a Container::node_type in a Container with unique keys. Includes at least the following non-static public data members:</para><para><itemizedlist>
  2069. <listitem>
  2070. <para>bool inserted; </para>
  2071. </listitem>
  2072. <listitem>
  2073. <para>Iterator position; </para>
  2074. </listitem>
  2075. <listitem>
  2076. <para>NodeType node</para>
  2077. </listitem>
  2078. </itemizedlist>
  2079. </para><para>This type is MoveConstructible, MoveAssignable, DefaultConstructible, Destructible, and lvalues of that type are swappable </para></description><data-member name="inserted"><type>bool</type></data-member>
  2080. <data-member name="position"><type>Iterator</type></data-member>
  2081. <data-member name="node"><type>NodeType</type></data-member>
  2082. <method-group name="public member functions">
  2083. </method-group>
  2084. <constructor/>
  2085. <constructor><parameter name="other"><paramtype><classname>insert_return_type_base</classname> &amp;&amp;</paramtype></parameter></constructor>
  2086. <constructor><template>
  2087. <template-type-parameter name="RelatedIt"/>
  2088. <template-type-parameter name="RelatedNode"/>
  2089. </template><parameter name="insert"><paramtype>bool</paramtype></parameter><parameter name="it"><paramtype>RelatedIt</paramtype></parameter><parameter name="node"><paramtype>RelatedNode &amp;&amp;</paramtype></parameter></constructor>
  2090. <copy-assignment><type><classname>insert_return_type_base</classname> &amp;</type><parameter name="other"><paramtype><classname>insert_return_type_base</classname> &amp;&amp;</paramtype></parameter></copy-assignment>
  2091. </struct><class name="node_handle"><template>
  2092. <template-type-parameter name="NodeAllocator"/>
  2093. <template-type-parameter name="KeyMapped"><default>void</default></template-type-parameter>
  2094. </template><description><para>A <classname alt="boost::container::node_handle">node_handle</classname> is an object that accepts ownership of a single element from an associative container. It may be used to transfer that ownership to another container with compatible nodes. Containers with compatible nodes have the same node handle type. Elements may be transferred in either direction between container types in the same row:.</para><para>Container types with compatible nodes</para><para>map&lt;K, T, C1, A&gt; &lt;-&gt; map&lt;K, T, C2, A&gt;</para><para>map&lt;K, T, C1, A&gt; &lt;-&gt; multimap&lt;K, T, C2, A&gt;</para><para>set&lt;K, C1, A&gt; &lt;-&gt; set&lt;K, C2, A&gt;</para><para>set&lt;K, C1, A&gt; &lt;-&gt; multiset&lt;K, C2, A&gt;</para><para>If a node handle is not empty, then it contains an allocator that is equal to the allocator of the container when the element was extracted. If a node handle is empty, it contains no allocator. </para></description><typedef name="value_type"><type>priv_value_t</type></typedef>
  2095. <typedef name="key_type"><type>keymapped_t::key_type</type></typedef>
  2096. <typedef name="mapped_type"><type>keymapped_t::mapped_type</type></typedef>
  2097. <typedef name="allocator_type"><type>nator_traits::template portable_rebind_alloc&lt; value_type &gt;::type</type></typedef>
  2098. <typedef name="container_node_type"><type>priv_node_t</type></typedef>
  2099. <method-group name="friend functions">
  2100. <method name="swap" cv="noexcept(BOOST_NOEXCEPT(x.swap(y))))"><type>friend void</type><parameter name="x"><paramtype><classname>node_handle</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>node_handle</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y). </para></description></method>
  2101. </method-group>
  2102. <method-group name="public member functions">
  2103. <method name="value" cv="const noexcept"><type>value_type &amp;</type><description><para><emphasis role="bold">Requires</emphasis>: empty() == false.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the value_type subobject in the container_node_type object pointed to by m_ptr</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2104. <method name="key" cv="const noexcept"><type>key_type &amp;</type><description><para><emphasis role="bold">Requires</emphasis>: empty() == false.</para><para><emphasis role="bold">Returns</emphasis>: A non-const reference to the key_type member of the value_type subobject in the container_node_type object pointed to by m_ptr.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Requires</emphasis>: Modifying the key through the returned reference is permitted. </para></description></method>
  2105. <method name="mapped" cv="const noexcept"><type>mapped_type &amp;</type><description><para><emphasis role="bold">Requires</emphasis>: empty() == false.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the mapped_type member of the value_type subobject in the container_node_type object pointed to by m_ptr</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2106. <method name="get_allocator" cv="const"><type>allocator_type</type><description><para><emphasis role="bold">Requires</emphasis>: empty() == false.</para><para><emphasis role="bold">Returns</emphasis>: A copy of the internally hold allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2107. <method name="conversion-operator" cv="const noexcept" specifiers="explicit"><type>bool</type><description><para><emphasis role="bold">Returns</emphasis>: m_ptr != nullptr. </para></description></method>
  2108. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Returns</emphasis>: m_ptr == nullptr. </para></description></method>
  2109. <method name="swap" cv="noexcept(nator_traits::propagate_on_container_swap::value||nator_traits::is_always_equal::value))"><type>void</type><parameter name="nh"><paramtype><classname>node_handle</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;empty(), or nh.empty(), or nator_traits::propagate_on_container_swap is true, or node_alloc() == nh.node_alloc().</para><para><emphasis role="bold">Effects</emphasis>: Calls swap(m_ptr, nh.m_ptr). If this-&gt;empty(), or nh.empty(), or nator_traits::propagate_on_- container_swap is true calls swap(node_alloc(), nh.node_alloc()). </para></description></method>
  2110. <method name="release" cv="noexcept"><type>node_pointer</type><description><para><emphasis role="bold">Effects</emphasis>: If this-&gt;empty() returns nullptr, otherwise returns m_ptr resets m_ptr to nullptr and destroys the internal allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;empty()</para><para><emphasis role="bold">Note</emphasis>: Non-standard extensions </para></description></method>
  2111. <method name="get" cv="const noexcept"><type>node_pointer</type><description><para><emphasis role="bold">Effects</emphasis>: Returns m_ptr.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extensions </para></description></method>
  2112. <method name="node_alloc" cv="noexcept"><type>nallocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal node allocator.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extensions </para></description></method>
  2113. <method name="node_alloc" cv="const noexcept"><type>const nallocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal node allocator.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extensions </para></description></method>
  2114. </method-group>
  2115. <constructor cv="noexcept"><description><para><emphasis role="bold">Effects</emphasis>: Initializes m_ptr to nullptr.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;empty() </para></description></constructor>
  2116. <constructor cv="noexcept"><parameter name="p"><paramtype>node_pointer</paramtype></parameter><parameter name="al"><paramtype>const nallocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::node_handle">node_handle</classname> object initializing internal pointer with p. If p != nullptr copy constructs internal allocator from al. </para></description></constructor>
  2117. <constructor cv="noexcept"><template>
  2118. <template-type-parameter name="KeyMapped2"/>
  2119. </template><parameter name="nh"><paramtype><classname>node_handle</classname>&lt; NodeAllocator, KeyMapped2 &gt; &amp;&amp;</paramtype></parameter><parameter name=""><paramtype>typename dtl::enable_if_c&lt;((unsigned) dtl::is_same&lt; KeyMapped, void &gt;::value+(unsigned) dtl::is_same&lt; KeyMapped2, void &gt;::value)==1u &gt;::type *</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::node_handle">node_handle</classname> object initializing internal pointer with a related nh's internal pointer and assigns nullptr to the later. If nh's internal pointer was not nullptr, move constructs internal allocator with nh's internal allocator and destroy nh's internal allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: nh.empty()</para><para><emphasis role="bold">Note</emphasis>: Two <classname alt="boost::container::node_handle">node_handle</classname>'s are related if only one of KeyMapped template parameter of a node handle is void. </para></description></constructor>
  2120. <constructor cv="noexcept"><parameter name="nh"><paramtype><classname>node_handle</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::node_handle">node_handle</classname> object initializing internal pointer with nh's internal pointer and assigns nullptr to the later. If nh's internal pointer was not nullptr, move constructs internal allocator with nh's internal allocator and destroy nh's internal allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: nh.empty() </para></description></constructor>
  2121. <destructor><description><para><emphasis role="bold">Effects</emphasis>: If !this-&gt;empty(), destroys the value_type subobject in the container_node_type object pointed to by c by calling allocator_traits&lt;impl_defined&gt;::destroy, then deallocates m_ptr by calling nator_traits::rebind_traits&lt;container_node_type&gt;::deallocate. </para></description></destructor>
  2122. <copy-assignment cv="noexcept"><type><classname>node_handle</classname> &amp;</type><parameter name="nh"><paramtype><classname>node_handle</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: Either this-&gt;empty(), or nator_traits::propagate_on_container_move_assignment is true, or node_alloc() == nh.node_alloc().</para><para><emphasis role="bold">Effects</emphasis>: If m_ptr != nullptr, destroys the value_type subobject in the container_node_type object pointed to by m_ptr by calling nator_traits::destroy, then deallocates m_ptr by calling nator_traits::deallocate. Assigns nh.m_ptr to m_ptr. If this-&gt;empty() or nator_traits::propagate_on_container_move_assignment is true, move assigns nh.node_alloc() to node_alloc(). Assigns nullptr to nh.m_ptr and assigns nullopt to nh.node_alloc().</para><para><emphasis role="bold">Returns</emphasis>: *this.</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></copy-assignment>
  2123. </class>
  2124. </namespace>
  2125. </namespace>
  2126. </header>
  2127. <header name="boost/container/options.hpp">
  2128. <namespace name="boost">
  2129. <namespace name="container">
  2130. <struct name="block_bytes"><template>
  2131. <template-nontype-parameter name="BlockBytes"><type>std::size_t</type><purpose><para>An unsigned integer value. </para></purpose></template-nontype-parameter>
  2132. </template><description><para>This option specifies the maximum size of a block in bytes: this delimites the number of contiguous elements that will be allocated by deque as min(1u, BlockBytes/sizeof(value_type)) A value zero represents the default value.</para><para>
  2133. </para></description></struct><struct name="block_size"><template>
  2134. <template-nontype-parameter name="BlockSize"><type>std::size_t</type></template-nontype-parameter>
  2135. </template><description><para>This option specifies the size of a block, delimites the number of contiguous elements that will be allocated by deque as BlockSize. A value zero represents the default value.</para><para>
  2136. </para></description></struct><struct name="deque_options"><template>
  2137. <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter>
  2138. </template><description><para>Helper metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::deque">boost::container::deque</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::block_bytes">boost::container::block_bytes</classname></computeroutput> </para></description><typedef name="type"><type>implementation_defined</type></typedef>
  2139. </struct><struct name="growth_factor"><template>
  2140. <template-type-parameter name="GrowthFactor"><purpose><para>A function object that has the following signature:<sbr/>
  2141. <sbr/>
  2142. <computeroutput>template&lt;class SizeType&gt;</computeroutput><sbr/>
  2143. <computeroutput>SizeType operator()(SizeType cur_cap, SizeType add_min_cap, SizeType max_cap) const;</computeroutput>.<sbr/>
  2144. <sbr/>
  2145. <computeroutput>cur_cap</computeroutput> is the current capacity, <computeroutput>add_min_cap</computeroutput> is the minimum additional capacity we want to achieve and <computeroutput>max_cap</computeroutput> is the maximum capacity that the allocator or other factors allow. The implementation should return a value between <computeroutput>cur_cap</computeroutput> + <computeroutput>add_min_cap</computeroutput> and <computeroutput>max_cap</computeroutput>. <computeroutput>cur_cap</computeroutput> + <computeroutput>add_min_cap</computeroutput> is guaranteed not to overflow/wraparound, but the implementation should handle wraparound produced by the growth factor.</para></purpose></template-type-parameter>
  2146. </template><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para>This option setter specifies the growth factor strategy of the underlying vector.</para><para>
  2147. Predefined growth factors that can be passed as arguments to this option are: <computeroutput><classname alt="boost::container::growth_factor_50">boost::container::growth_factor_50</classname></computeroutput> <computeroutput><classname alt="boost::container::growth_factor_60">boost::container::growth_factor_60</classname></computeroutput> <computeroutput><classname alt="boost::container::growth_factor_100">boost::container::growth_factor_100</classname></computeroutput> </para><para>If this option is not specified, a default will be used by the container. </para></description></struct><struct name="growth_factor_100"><description><para>This growth factor argument specifies that the container should increase it's capacity a 100% (doubling its capacity) when existing capacity is exhausted. </para></description></struct><struct name="growth_factor_50"><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para>This growth factor argument specifies that the container should increase it's capacity a 50% when existing capacity is exhausted. </para></description></struct><struct name="growth_factor_60"><description><para>This growth factor argument specifies that the container should increase it's capacity a 60% when existing capacity is exhausted. </para></description></struct><struct name="hash_assoc_options"><template>
  2148. <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter>
  2149. </template><description><para>Helper metafunction to combine options into a single type to be used by <computeroutput>boost::container::hash_set</computeroutput>, <computeroutput>boost::container::hash_multiset</computeroutput> <computeroutput>boost::container::hash_map</computeroutput> and <computeroutput>boost::container::hash_multimap</computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::store_hash">boost::container::store_hash</classname></computeroutput> </para></description><typedef name="type"><type>implementation_defined</type></typedef>
  2150. </struct><struct name="inplace_alignment"><template>
  2151. <template-nontype-parameter name="Alignment"><type>std::size_t</type><purpose><para>An unsigned integer value. Must be power of two. </para></purpose></template-nontype-parameter>
  2152. </template><description><para>This option specifies the desired alignment for the value_type stored in the container. A value zero represents the natural alignment.</para><para>
  2153. </para></description></struct><struct name="optimize_size"><template>
  2154. <template-nontype-parameter name="Enabled"><type>bool</type></template-nontype-parameter>
  2155. </template><description><para>This option setter specifies if node size is optimized storing rebalancing data masked into pointers for ordered associative containers </para></description></struct><struct name="small_vector_options"><template>
  2156. <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter>
  2157. </template><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para>Helper metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::small_vector">boost::container::small_vector</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::growth_factor">boost::container::growth_factor</classname></computeroutput> and <computeroutput><classname alt="boost::container::inplace_alignment">boost::container::inplace_alignment</classname></computeroutput> </para></description><typedef name="type"><type>implementation_defined</type></typedef>
  2158. </struct><struct name="static_vector_options"><template>
  2159. <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter>
  2160. </template><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para>Helper metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::static_vector">boost::container::static_vector</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::throw_on_overflow">boost::container::throw_on_overflow</classname></computeroutput> and <computeroutput><classname alt="boost::container::inplace_alignment">boost::container::inplace_alignment</classname></computeroutput> </para></description><typedef name="type"><type>implementation_defined</type></typedef>
  2161. </struct><struct name="store_hash"><template>
  2162. <template-nontype-parameter name="Enabled"><type>bool</type></template-nontype-parameter>
  2163. </template><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para>This option setter specifies if node size is optimized storing rebalancing data masked into pointers for ordered associative containers </para></description></struct><struct name="stored_size"><template>
  2164. <template-type-parameter name="StoredSizeType"><purpose><para>An unsigned integer type. It shall be smaller than than the size of the size_type deduced from <computeroutput><classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;A&gt;::size_type</computeroutput> or the same type.</para></purpose></template-type-parameter>
  2165. </template><description><para>This option specifies the unsigned integer type that a user wants the container to use to hold size-related information inside a container (e.g. current size, current capacity).</para><para>
  2166. If the maximum capacity() to be used is limited, a user can try to use 8-bit, 16-bit (e.g. in 32-bit machines), or 32-bit size types (e.g. in a 64 bit machine) to see if some memory can be saved for empty vectors. This could potentially performance benefits due to better cache usage.</para><para>Note that alignment requirements can disallow theoretical space savings. Example: <computeroutput>vector</computeroutput> holds a pointer and two size types (for size and capacity), in a 32 bit machine a 8 bit size type (total size: 4 byte pointer + 2 x 1 byte sizes = 6 bytes) will not save space when comparing two 16-bit size types because usually a 32 bit alignment is required for vector and the size will be rounded to 8 bytes. In a 64-bit machine a 16 bit size type does not usually save memory when comparing to a 32-bit size type. Measure the size of the resulting container and do not assume a smaller <computeroutput><classname alt="boost::container::stored_size">stored_size</classname></computeroutput> will always lead to a smaller sizeof(container).</para><para>If a user tries to insert more elements than representable by <computeroutput><classname alt="boost::container::stored_size">stored_size</classname></computeroutput>, vector will throw a length_error.</para><para>If this option is not specified, <computeroutput><classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;A&gt;::size_type</computeroutput> (usually std::size_t) will be used to store size-related information inside the container. </para></description></struct><struct name="throw_on_overflow"><template>
  2167. <template-nontype-parameter name="ThrowOnOverflow"><type>bool</type></template-nontype-parameter>
  2168. </template><description><para>This option specifies if the container will throw if in the static capacity is not sufficient to hold the required values. If false is specified, insufficient capacity will lead to BOOST_ASSERT, and if this assertion returns, to undefined behaviour, which potentially can lead to better <classname alt="boost::container::static_vector">static_vector</classname> performance. The default value is true.</para><para>
  2169. </para></description></struct><struct name="tree_assoc_options"><template>
  2170. <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter>
  2171. </template><description><para>Helper metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::set">boost::container::set</classname></computeroutput>, <computeroutput><classname alt="boost::container::multiset">boost::container::multiset</classname></computeroutput> <computeroutput><classname alt="boost::container::map">boost::container::map</classname></computeroutput> and <computeroutput><classname alt="boost::container::multimap">boost::container::multimap</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::optimize_size">boost::container::optimize_size</classname></computeroutput> and <computeroutput><classname alt="boost::container::tree_type">boost::container::tree_type</classname></computeroutput> </para></description><typedef name="type"><type>implementation_defined</type></typedef>
  2172. </struct><struct name="tree_type"><template>
  2173. <template-nontype-parameter name="TreeType"><type>tree_type_enum</type></template-nontype-parameter>
  2174. </template><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para>This option setter specifies the underlying tree type (red-black, AVL, Scapegoat or Splay) for ordered associative containers </para></description></struct><struct name="vector_options"><template>
  2175. <template-nontype-parameter name="Options"><type>class ...</type></template-nontype-parameter>
  2176. </template><description><para>Helper metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::vector">boost::container::vector</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::growth_factor">boost::container::growth_factor</classname></computeroutput> and <computeroutput><classname alt="boost::container::stored_size">boost::container::stored_size</classname></computeroutput> </para></description><typedef name="type"><type>implementation_defined</type></typedef>
  2177. </struct><enum name="tree_type_enum"><enumvalue name="red_black_tree"/><enumvalue name="avl_tree"/><enumvalue name="scapegoat_tree"/><enumvalue name="splay_tree"/><description><para>Enumeration used to configure ordered associative containers with a concrete tree implementation. </para></description></enum>
  2178. <typedef name="tree_assoc_options_t"><description><para>Helper alias metafunction to combine options into a single type to be used by tree-based associative containers </para></description><type>typename <classname>boost::container::tree_assoc_options</classname>&lt; Options... &gt;::type</type></typedef>
  2179. <typedef name="hash_assoc_options_t"><description><para>Helper alias metafunction to combine options into a single type to be used by hash-based associative containers </para></description><type>typename <classname>boost::container::hash_assoc_options</classname>&lt; Options... &gt;::type</type></typedef>
  2180. <typedef name="vector_options_t"><description><para>Helper alias metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::vector">boost::container::vector</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::growth_factor">boost::container::growth_factor</classname></computeroutput> and <computeroutput><classname alt="boost::container::stored_size">boost::container::stored_size</classname></computeroutput> </para></description><type>typename <classname>boost::container::vector_options</classname>&lt; Options... &gt;::type</type></typedef>
  2181. <typedef name="small_vector_options_t"><description><para>Helper alias metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::small_vector">boost::container::small_vector</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::growth_factor">boost::container::growth_factor</classname></computeroutput> and <computeroutput><classname alt="boost::container::stored_size">boost::container::stored_size</classname></computeroutput> </para></description><type>typename <classname>boost::container::small_vector_options</classname>&lt; Options... &gt;::type</type></typedef>
  2182. <typedef name="static_vector_options_t"><description><para>Helper alias metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::static_vector">boost::container::static_vector</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::growth_factor">boost::container::growth_factor</classname></computeroutput> and <computeroutput><classname alt="boost::container::stored_size">boost::container::stored_size</classname></computeroutput> </para></description><type>typename <classname>boost::container::static_vector_options</classname>&lt; Options... &gt;::type</type></typedef>
  2183. <typedef name="deque_options_t"><description><para>Helper alias metafunction to combine options into a single type to be used by <computeroutput><classname alt="boost::container::deque">boost::container::deque</classname></computeroutput>. Supported options are: <computeroutput><classname alt="boost::container::block_bytes">boost::container::block_bytes</classname></computeroutput> </para></description><type>typename <classname>boost::container::deque_options</classname>&lt; Options... &gt;::type</type></typedef>
  2184. </namespace>
  2185. </namespace>
  2186. </header>
  2187. <header name="boost/container/pmr/global_resource.hpp">
  2188. <namespace name="boost">
  2189. <namespace name="container">
  2190. <namespace name="pmr">
  2191. <function name="new_delete_resource"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: A pointer to a static-duration object of a type derived from <classname alt="boost::container::pmr::memory_resource">memory_resource</classname> that can serve as a resource for allocating memory using global <computeroutput>operator new</computeroutput> and global <computeroutput>operator delete</computeroutput>. The same value is returned every time this function is called. For return value p and memory resource r, p-&gt;is_equal(r) returns &amp;r == p. </para></description></function>
  2192. <function name="null_memory_resource"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: A pointer to a static-duration object of a type derived from <classname alt="boost::container::pmr::memory_resource">memory_resource</classname> for which allocate() always throws bad_alloc and for which deallocate() has no effect. The same value is returned every time this function is called. For return value p and memory resource r, p-&gt;is_equal(r) returns &amp;r == p. </para></description></function>
  2193. <function name="set_default_resource"><type><classname>memory_resource</classname> *</type><parameter name="r"><paramtype><classname>memory_resource</classname> *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If r is non-null, sets the value of the default memory resource pointer to r, otherwise sets the default memory resource pointer to new_delete_resource().</para><para><emphasis role="bold">Postconditions</emphasis>: get_default_resource() == r.</para><para><emphasis role="bold">Returns</emphasis>: The previous value of the default memory resource pointer.</para><para><emphasis role="bold">Remarks</emphasis>: Calling the set_default_resource and get_default_resource functions shall not incur a data race. A call to the set_default_resource function shall synchronize with subsequent calls to the set_default_resource and get_default_resource functions. </para></description></function>
  2194. <function name="get_default_resource"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: The current value of the default memory resource pointer. </para></description></function>
  2195. </namespace>
  2196. </namespace>
  2197. </namespace>
  2198. </header>
  2199. <header name="boost/container/pmr/memory_resource.hpp">
  2200. <namespace name="boost">
  2201. <namespace name="container">
  2202. <namespace name="pmr">
  2203. <class name="memory_resource"><description><para>The <classname alt="boost::container::pmr::memory_resource">memory_resource</classname> class is an abstract interface to an unbounded set of classes encapsulating memory resources. </para></description><data-member name="max_align" specifiers="static"><type>constexpr std::size_t</type></data-member>
  2204. <method-group name="public member functions">
  2205. <method name="allocate"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype><default>max_align</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to <computeroutput>return do_allocate(bytes, alignment);</computeroutput> </para></description></method>
  2206. <method name="deallocate"><type>void</type><parameter name="p"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype><default>max_align</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to <computeroutput>return do_deallocate(bytes, alignment);</computeroutput> </para></description></method>
  2207. <method name="is_equal" cv="const noexcept"><type>bool</type><parameter name="other"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to <computeroutput>return return do_is_equal(other);</computeroutput> </para></description></method>
  2208. </method-group>
  2209. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys this <classname alt="boost::container::pmr::memory_resource">memory_resource</classname>. </para></description></destructor>
  2210. <method-group name="friend functions">
  2211. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name="a"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><parameter name="b"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>&amp;a == &amp;b || a.is_equal(b)</computeroutput>. </para></description></method>
  2212. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name="a"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><parameter name="b"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: !(a == b). </para></description></method>
  2213. </method-group>
  2214. <method-group name="protected member functions">
  2215. <method name="do_allocate" cv="= 0" specifiers="virtual"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: Alignment shall be a power of two.</para><para><emphasis role="bold">Returns</emphasis>: A derived class shall implement this function to return a pointer to allocated storage with a size of at least bytes. The returned storage is aligned to the specified alignment, if such alignment is supported; otherwise it is aligned to max_align.</para><para><emphasis role="bold">Throws</emphasis>: A derived class implementation shall throw an appropriate exception if it is unable to allocate memory with the requested size and alignment. </para></description></method>
  2216. <method name="do_deallocate" cv="= 0" specifiers="virtual"><type>void</type><parameter name="p"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p shall have been returned from a prior call to <computeroutput>allocate(bytes, alignment)</computeroutput> on a memory resource equal to *this, and the storage at p shall not yet have been deallocated.</para><para><emphasis role="bold">Effects</emphasis>: A derived class shall implement this function to dispose of allocated storage.</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2217. <method name="do_is_equal" cv="const = 0" specifiers="virtual"><type>bool</type><parameter name="other"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A derived class shall implement this function to return true if memory allocated from this can be deallocated from other and vice-versa; otherwise it shall return false. <emphasis>[Note: The most-derived type of other might not match the type of this. For a derived class, D, a typical implementation of this function will compute <computeroutput>dynamic_cast&lt;const D*&gt;(&amp;other)</computeroutput> and go no further (i.e., return false) if it returns nullptr. - end note]</emphasis>. </para></description></method>
  2218. </method-group>
  2219. </class>
  2220. </namespace>
  2221. </namespace>
  2222. </namespace>
  2223. </header>
  2224. <header name="boost/container/pmr/monotonic_buffer_resource.hpp">
  2225. <namespace name="boost">
  2226. <namespace name="container">
  2227. <namespace name="pmr">
  2228. <class name="monotonic_buffer_resource"><inherit access="public">boost::container::pmr::memory_resource</inherit><description><para>A <classname alt="boost::container::pmr::monotonic_buffer_resource">monotonic_buffer_resource</classname> is a special-purpose memory resource intended for very fast memory allocations in situations where memory is used to build up a few objects and then is released all at once when the memory resource object is destroyed. It has the following qualities:</para><para><itemizedlist>
  2229. <listitem><para>A call to deallocate has no effect, thus the amount of memory consumed increases monotonically until the resource is destroyed.</para>
  2230. </listitem><listitem><para>The program can supply an initial buffer, which the allocator uses to satisfy memory requests.</para>
  2231. </listitem><listitem><para>When the initial buffer (if any) is exhausted, it obtains additional buffers from an upstream memory resource supplied at construction. Each additional buffer is larger than the previous one, following a geometric progression.</para>
  2232. </listitem><listitem><para>It is intended for access from one thread of control at a time. Specifically, calls to allocate and deallocate do not synchronize with one another.</para>
  2233. </listitem><listitem><para>It owns the allocated memory and frees it on destruction, even if deallocate has not been called for some of the allocated blocks. </para>
  2234. </listitem></itemizedlist>
  2235. </para></description><data-member name="initial_next_buffer_size" specifiers="static"><type>const std::size_t</type><description><para>The number of bytes that will be requested by the default in the first call to the upstream allocator</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></data-member>
  2236. <method-group name="public member functions">
  2237. <method name="release" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: <computeroutput>upstream_resource()-&gt;deallocate()</computeroutput> as necessary to release all allocated memory. [Note: memory is released back to <computeroutput>upstream_resource()</computeroutput> even if some blocks that were allocated from this have not been deallocated from this. - end note] </para></description></method>
  2238. <method name="upstream_resource" cv="const noexcept"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: The value of the internal resource. </para></description></method>
  2239. <method name="remaining_storage" cv="const noexcept"><type>std::size_t</type><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><parameter name="wasted_due_to_alignment"><paramtype>std::size_t &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of bytes of storage available for the specified alignment and the number of bytes wasted due to the requested alignment.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2240. <method name="remaining_storage" cv="const noexcept"><type>std::size_t</type><parameter name="alignment"><paramtype>std::size_t</paramtype><default>1u</default></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of bytes of storage available for the specified alignment.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2241. <method name="current_buffer" cv="const noexcept"><type>const void *</type><description><para><emphasis role="bold">Returns</emphasis>: The address pointing to the start of the current free storage.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2242. <method name="next_buffer_size" cv="const noexcept"><type>std::size_t</type><description><para><emphasis role="bold">Returns</emphasis>: The number of bytes that will be requested for the next buffer once the current one is exhausted.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2243. </method-group>
  2244. <constructor specifiers="explicit" cv="noexcept"><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>upstream</computeroutput> shall be the address of a valid memory resource or <computeroutput>nullptr</computeroutput></para><para><emphasis role="bold">Effects</emphasis>: If <computeroutput>upstream</computeroutput> is not nullptr, sets the internal resource to <computeroutput>upstream</computeroutput>, to get_default_resource() otherwise. Sets the internal <computeroutput>current_buffer</computeroutput> to <computeroutput>nullptr</computeroutput> and the internal <computeroutput>next_buffer_size</computeroutput> to an implementation-defined size. </para></description></constructor>
  2245. <constructor specifiers="explicit" cv="noexcept"><parameter name="initial_size"><paramtype>std::size_t</paramtype></parameter><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>upstream</computeroutput> shall be the address of a valid memory resource or <computeroutput>nullptr</computeroutput> and <computeroutput>initial_size</computeroutput> shall be greater than zero.</para><para><emphasis role="bold">Effects</emphasis>: If <computeroutput>upstream</computeroutput> is not nullptr, sets the internal resource to <computeroutput>upstream</computeroutput>, to get_default_resource() otherwise. Sets the internal <computeroutput>current_buffer</computeroutput> to <computeroutput>nullptr</computeroutput> and <computeroutput>next_buffer_size</computeroutput> to at least <computeroutput>initial_size</computeroutput>. </para></description></constructor>
  2246. <constructor cv="noexcept"><parameter name="buffer"><paramtype>void *</paramtype></parameter><parameter name="buffer_size"><paramtype>std::size_t</paramtype></parameter><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>upstream</computeroutput> shall be the address of a valid memory resource or <computeroutput>nullptr</computeroutput>, <computeroutput>buffer_size</computeroutput> shall be no larger than the number of bytes in buffer.</para><para><emphasis role="bold">Effects</emphasis>: If <computeroutput>upstream</computeroutput> is not nullptr, sets the internal resource to <computeroutput>upstream</computeroutput>, to get_default_resource() otherwise. Sets the internal <computeroutput>current_buffer</computeroutput> to <computeroutput>buffer</computeroutput>, and <computeroutput>next_buffer_size</computeroutput> to <computeroutput>buffer_size</computeroutput> (but not less than an implementation-defined size), then increases <computeroutput>next_buffer_size</computeroutput> by an implementation-defined growth factor (which need not be integral). </para></description></constructor>
  2247. <constructor cv="= delete"><parameter name=""><paramtype>const <classname>monotonic_buffer_resource</classname> &amp;</paramtype></parameter></constructor>
  2248. <copy-assignment cv="= delete"><type><classname>monotonic_buffer_resource</classname></type><parameter name=""><paramtype>const <classname>monotonic_buffer_resource</classname> &amp;</paramtype></parameter></copy-assignment>
  2249. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Calls <computeroutput>this-&gt;release()</computeroutput>. </para></description></destructor>
  2250. <method-group name="protected member functions">
  2251. <method name="do_allocate" specifiers="virtual"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A pointer to allocated storage with a size of at least <computeroutput>bytes</computeroutput>. The size and alignment of the allocated memory shall meet the requirements for a class derived from <computeroutput><classname alt="boost::container::pmr::memory_resource">memory_resource</classname></computeroutput>.</para><para><emphasis role="bold">Effects</emphasis>: If the unused space in the internal <computeroutput>current_buffer</computeroutput> can fit a block with the specified bytes and alignment, then allocate the return block from the internal <computeroutput>current_buffer</computeroutput>; otherwise sets the internal <computeroutput>current_buffer</computeroutput> to <computeroutput>upstream_resource()-&gt;allocate(n, m)</computeroutput>, where <computeroutput>n</computeroutput> is not less than <computeroutput>max(bytes, next_buffer_size)</computeroutput> and <computeroutput>m</computeroutput> is not less than alignment, and increase <computeroutput>next_buffer_size</computeroutput> by an implementation-defined growth factor (which need not be integral), then allocate the return block from the newly-allocated internal <computeroutput>current_buffer</computeroutput>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless <computeroutput>upstream_resource()-&gt;allocate()</computeroutput> throws. </para></description></method>
  2252. <method name="do_deallocate" cv="noexcept" specifiers="virtual"><type>void</type><parameter name="p"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: None</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Remarks</emphasis>: Memory used by this resource increases monotonically until its destruction. </para></description></method>
  2253. <method name="do_is_equal" cv="const noexcept" specifiers="virtual"><type>bool</type><parameter name="other"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>this == dynamic_cast&lt;const monotonic_buffer_resource*&gt;(&amp;other)</computeroutput>. </para></description></method>
  2254. </method-group>
  2255. </class>
  2256. </namespace>
  2257. </namespace>
  2258. </namespace>
  2259. </header>
  2260. <header name="boost/container/pmr/polymorphic_allocator.hpp">
  2261. <namespace name="boost">
  2262. <namespace name="container">
  2263. <namespace name="pmr">
  2264. <class name="polymorphic_allocator"><template>
  2265. <template-type-parameter name="T"/>
  2266. </template><description><para>A specialization of class template <computeroutput><classname alt="boost::container::pmr::polymorphic_allocator">polymorphic_allocator</classname></computeroutput> conforms to the Allocator requirements. Constructed with different memory resources, different instances of the same specialization of <computeroutput><classname alt="boost::container::pmr::polymorphic_allocator">polymorphic_allocator</classname></computeroutput> can exhibit entirely different allocation behavior. This runtime polymorphism allows objects that use <classname alt="boost::container::pmr::polymorphic_allocator">polymorphic_allocator</classname> to behave as if they used different allocator types at run time even though they use the same static allocator type. </para></description><typedef name="value_type"><type>T</type></typedef>
  2267. <method-group name="public member functions">
  2268. <method name="allocate"><type>T *</type><parameter name="n"><paramtype>size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Equivalent to <computeroutput>static_cast&lt;T*&gt;(m_resource-&gt;allocate(n * sizeof(T), alignof(T)))</computeroutput>. </para></description></method>
  2269. <method name="deallocate"><type>void</type><parameter name="p"><paramtype>T *</paramtype></parameter><parameter name="n"><paramtype>size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p was allocated from a memory resource, x, equal to *m_resource, using <computeroutput>x.allocate(n * sizeof(T), alignof(T))</computeroutput>.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to m_resource-&gt;deallocate(p, n * sizeof(T), alignof(T)).</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2270. <method name="construct"><type>void</type><template>
  2271. <template-type-parameter name="U"/>
  2272. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  2273. </template><parameter name="p"><paramtype>U *</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: Uses-allocator construction of T with allocator <computeroutput>*this</computeroutput> and constructor arguments <computeroutput>std::forward&lt;Args&gt;(args)...</computeroutput> is well-formed. [Note: uses-allocator construction is always well formed for types that do not use allocators. - end note]</para><para><emphasis role="bold">Effects</emphasis>: Construct a T object at p by uses-allocator construction with allocator <computeroutput>*this</computeroutput> and constructor arguments <computeroutput>std::forward&lt;Args&gt;(args)...</computeroutput>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the constructor for T throws. </para></description></method>
  2274. <method name="destroy"><type>void</type><template>
  2275. <template-type-parameter name="U"/>
  2276. </template><parameter name="p"><paramtype>U *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: p-&gt;~U(). </para></description></method>
  2277. <method name="select_on_container_copy_construction" cv="const"><type><classname>polymorphic_allocator</classname></type><description><para><emphasis role="bold">Returns</emphasis>: Equivalent to <computeroutput>polymorphic_allocator()</computeroutput>. </para></description></method>
  2278. <method name="resource" cv="const"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: m_resource. </para></description></method>
  2279. </method-group>
  2280. <constructor cv="noexcept"><description><para><emphasis role="bold">Effects</emphasis>: Sets m_resource to <computeroutput>get_default_resource()</computeroutput>. </para></description></constructor>
  2281. <constructor><parameter name="r"><paramtype><classname>memory_resource</classname> *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: r is non-null.</para><para><emphasis role="bold">Effects</emphasis>: Sets m_resource to r.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Notes</emphasis>: This constructor provides an implicit conversion from memory_resource*. Non-standard extension: if r is null m_resource is set to get_default_resource(). </para></description></constructor>
  2282. <constructor><parameter name="other"><paramtype>const <classname>polymorphic_allocator</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Sets m_resource to other.resource(). </para></description></constructor>
  2283. <constructor cv="noexcept"><template>
  2284. <template-type-parameter name="U"/>
  2285. </template><parameter name="other"><paramtype>const <classname>polymorphic_allocator</classname>&lt; U &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Sets m_resource to other.resource(). </para></description></constructor>
  2286. <copy-assignment><type><classname>polymorphic_allocator</classname> &amp;</type><parameter name="other"><paramtype>const <classname>polymorphic_allocator</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Sets m_resource to other.resource(). </para></description></copy-assignment>
  2287. </class><function name="operator=="><type>bool</type><template>
  2288. <template-type-parameter name="T1"/>
  2289. <template-type-parameter name="T2"/>
  2290. </template><parameter name="a"><paramtype>const <classname>polymorphic_allocator</classname>&lt; T1 &gt; &amp;</paramtype></parameter><parameter name="b"><paramtype>const <classname>polymorphic_allocator</classname>&lt; T2 &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>*a.resource() == *b.resource()</computeroutput>. </para></description></function>
  2291. <function name="operator!="><type>bool</type><template>
  2292. <template-type-parameter name="T1"/>
  2293. <template-type-parameter name="T2"/>
  2294. </template><parameter name="a"><paramtype>const <classname>polymorphic_allocator</classname>&lt; T1 &gt; &amp;</paramtype></parameter><parameter name="b"><paramtype>const <classname>polymorphic_allocator</classname>&lt; T2 &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>! (a == b)</computeroutput>. </para></description></function>
  2295. </namespace>
  2296. </namespace>
  2297. </namespace>
  2298. </header>
  2299. <header name="boost/container/pmr/pool_options.hpp">
  2300. <namespace name="boost">
  2301. <namespace name="container">
  2302. <namespace name="pmr">
  2303. <struct name="pool_options"><description><para>The members of <classname alt="boost::container::pmr::pool_options">pool_options</classname> comprise a set of constructor options for pool resources. The effect of each option on the pool resource behavior is described below:</para><para><itemizedlist>
  2304. <listitem><para><computeroutput>std::size_t max_blocks_per_chunk</computeroutput>: The maximum number of blocks that will be allocated at once from the upstream memory resource to replenish a pool. If the value of <computeroutput>max_blocks_per_chunk</computeroutput> is zero or is greater than an implementation-defined limit, that limit is used instead. The implementation may choose to use a smaller value than is specified in this field and may use different values for different pools.</para>
  2305. </listitem><listitem><para><computeroutput>std::size_t largest_required_pool_block</computeroutput>: The largest allocation size that is required to be fulfilled using the pooling mechanism. Attempts to allocate a single block larger than this threshold will be allocated directly from the upstream memory resource. If largest_required_pool_block is zero or is greater than an implementation-defined limit, that limit is used instead. The implementation may choose a pass-through threshold larger than specified in this field. </para>
  2306. </listitem></itemizedlist>
  2307. </para></description><data-member name="max_blocks_per_chunk"><type>std::size_t</type></data-member>
  2308. <data-member name="largest_required_pool_block"><type>std::size_t</type></data-member>
  2309. <method-group name="public member functions">
  2310. </method-group>
  2311. <constructor/>
  2312. </struct>
  2313. </namespace>
  2314. </namespace>
  2315. </namespace>
  2316. </header>
  2317. <header name="boost/container/pmr/resource_adaptor.hpp">
  2318. <namespace name="boost">
  2319. <namespace name="container">
  2320. <namespace name="pmr">
  2321. <class name="resource_adaptor_imp"><template>
  2322. <template-type-parameter name="Allocator"/>
  2323. </template><inherit access="public">boost::container::pmr::memory_resource</inherit><description><para>An instance of resource_adaptor&lt;Allocator&gt; is an adaptor that wraps a <classname alt="boost::container::pmr::memory_resource">memory_resource</classname> interface around Allocator. In order that resource_adaptor&lt;X&lt;T&gt;&gt; and resource_adaptor&lt;X<underline>&gt; are the same type for any allocator template X and types T and U, resource_adaptor&lt;Allocator&gt; is rendered as an alias to this class template such that Allocator is rebound to a char value type in every specialization of the class template. The requirements on this class template are defined below. In addition to the Allocator requirements, the parameter to resource_adaptor shall meet the following additional requirements:</underline></para><para><underline><itemizedlist>
  2324. <listitem><para><computeroutput>typename <classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: pointer</computeroutput> shall be identical to <computeroutput>typename <classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: value_type*</computeroutput>.</para>
  2325. </listitem><listitem><para><computeroutput>typename <classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: const_pointer</computeroutput> shall be identical to <computeroutput>typename <classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: value_type const*</computeroutput>.</para>
  2326. </listitem><listitem><para><computeroutput>typename <classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: void_pointer</computeroutput> shall be identical to <computeroutput>void*</computeroutput>.</para>
  2327. </listitem><listitem><para><computeroutput>typename <classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: const_void_pointer</computeroutput> shall be identical to <computeroutput>void const*</computeroutput>. </para>
  2328. </listitem></itemizedlist>
  2329. </underline></para></description><typedef name="allocator_type"><type>Allocator</type></typedef>
  2330. <method-group name="public member functions">
  2331. <method name="get_allocator"><type>allocator_type &amp;</type><purpose><emphasis role="bold">Effects</emphasis>: Returns m_alloc. </purpose></method>
  2332. <method name="get_allocator" cv="const"><type>const allocator_type &amp;</type><purpose><emphasis role="bold">Effects</emphasis>: Returns m_alloc. </purpose></method>
  2333. </method-group>
  2334. <constructor><description><para><emphasis role="bold">Effects</emphasis>: Default constructs m_alloc. </para></description></constructor>
  2335. <constructor><parameter name="other"><paramtype>const <classname>resource_adaptor_imp</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs m_alloc. </para></description></constructor>
  2336. <constructor><parameter name="other"><paramtype><classname>resource_adaptor_imp</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs m_alloc. </para></description></constructor>
  2337. <constructor specifiers="explicit"><parameter name="a2"><paramtype>const Allocator &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Initializes m_alloc with a2. </para></description></constructor>
  2338. <constructor specifiers="explicit"><parameter name="a2"><paramtype>Allocator &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Initializes m_alloc with a2. </para></description></constructor>
  2339. <copy-assignment><type><classname>resource_adaptor_imp</classname> &amp;</type><parameter name="other"><paramtype>const <classname>resource_adaptor_imp</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy assigns m_alloc. </para></description></copy-assignment>
  2340. <copy-assignment><type><classname>resource_adaptor_imp</classname> &amp;</type><parameter name="other"><paramtype><classname>resource_adaptor_imp</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move assigns m_alloc. </para></description></copy-assignment>
  2341. <method-group name="protected member functions">
  2342. <method name="do_allocate" specifiers="virtual"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Allocated memory obtained by calling m_alloc.allocate. The size and alignment of the allocated memory shall meet the requirements for a class derived from <classname alt="boost::container::pmr::memory_resource">memory_resource</classname>. </para></description></method>
  2343. <method name="do_deallocate" specifiers="virtual"><type>void</type><parameter name="p"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p was previously allocated using A.allocate, where A == m_alloc, and not subsequently deallocated.</para><para><emphasis role="bold">Effects</emphasis>: Returns memory to the allocator using m_alloc.deallocate(). </para></description></method>
  2344. <method name="do_is_equal" cv="const noexcept" specifiers="virtual"><type>bool</type><parameter name="other"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para>Let p be dynamic_cast&lt;const resource_adaptor_imp*&gt;(&amp;other).</para><para><emphasis role="bold">Returns</emphasis>: false if p is null, otherwise the value of m_alloc == p-&gt;m_alloc. </para></description></method>
  2345. </method-group>
  2346. <method-group name="private member functions">
  2347. <method name="priv_aligned_alloc"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter></method>
  2348. <method name="priv_aligned_dealloc"><type>void</type><parameter name="aligned_ptr"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter></method>
  2349. </method-group>
  2350. <method-group name="private static functions">
  2351. <method name="priv_bookeeping_addr_from_aligned_ptr" specifiers="static"><type>void *</type><parameter name="aligned_ptr"><paramtype>void *</paramtype></parameter></method>
  2352. <method name="priv_extra_bytes_for_overalignment" specifiers="static"><type>std::size_t</type><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter></method>
  2353. <method name="priv_guaranteed_allocator_alignment" specifiers="static"><type>std::size_t</type></method>
  2354. </method-group>
  2355. </class><typedef name="resource_adaptor"><description><para><computeroutput>resource_adaptor&lt;Allocator&gt;</computeroutput> is rendered as an alias to <classname alt="boost::container::pmr::resource_adaptor_imp">resource_adaptor_imp</classname> class template such that Allocator is rebound to a char value type. </para></description><type><classname>resource_adaptor_imp</classname>&lt; typename <classname>allocator_traits</classname>&lt; Allocator &gt;::template rebind_alloc&lt; char &gt; &gt;</type></typedef>
  2356. </namespace>
  2357. <namespace name="pmr_dtl">
  2358. <struct name="max_allocator_alignment"><template>
  2359. <template-type-parameter name="T"/>
  2360. </template><data-member name="value" specifiers="static"><type>const std::size_t</type></data-member>
  2361. </struct><struct-specialization name="max_allocator_alignment"><template>
  2362. <template-type-parameter name="T"/>
  2363. </template><specialization><template-arg>::boost::container::new_allocator&lt; T &gt;</template-arg></specialization><data-member name="value" specifiers="static"><type>const std::size_t</type></data-member>
  2364. </struct-specialization><struct-specialization name="max_allocator_alignment"><template>
  2365. <template-type-parameter name="T"/>
  2366. </template><specialization><template-arg>std::allocator&lt; T &gt;</template-arg></specialization><data-member name="value" specifiers="static"><type>const std::size_t</type></data-member>
  2367. </struct-specialization></namespace>
  2368. </namespace>
  2369. </namespace>
  2370. </header>
  2371. <header name="boost/container/pmr/synchronized_pool_resource.hpp">
  2372. <namespace name="boost">
  2373. <namespace name="container">
  2374. <namespace name="pmr">
  2375. <class name="synchronized_pool_resource"><inherit access="public">boost::container::pmr::memory_resource</inherit><description><para>A <classname alt="boost::container::pmr::synchronized_pool_resource">synchronized_pool_resource</classname> is a general-purpose memory resources having the following qualities:</para><para><itemizedlist>
  2376. <listitem><para>Each resource owns the allocated memory, and frees it on destruction, even if deallocate has not been called for some of the allocated blocks.</para>
  2377. </listitem><listitem><para>A pool resource consists of a collection of pools, serving requests for different block sizes. Each individual pool manages a collection of chunks that are in turn divided into blocks of uniform size, returned via calls to do_allocate. Each call to do_allocate(size, alignment) is dispatched to the pool serving the smallest blocks accommodating at least size bytes.</para>
  2378. </listitem><listitem><para>When a particular pool is exhausted, allocating a block from that pool results in the allocation of an additional chunk of memory from the upstream allocator (supplied at construction), thus replenishing the pool. With each successive replenishment, the chunk size obtained increases geometrically. [ Note: By allocating memory in chunks, the pooling strategy increases the chance that consecutive allocations will be close together in memory. - end note ]</para>
  2379. </listitem><listitem><para>Allocation requests that exceed the largest block size of any pool are fulfilled directly from the upstream allocator.</para>
  2380. </listitem><listitem><para>A <classname alt="boost::container::pmr::pool_options">pool_options</classname> struct may be passed to the pool resource constructors to tune the largest block size and the maximum chunk size.</para>
  2381. </listitem></itemizedlist>
  2382. </para><para>A <classname alt="boost::container::pmr::synchronized_pool_resource">synchronized_pool_resource</classname> may be accessed from multiple threads without external synchronization and may have thread-specific pools to reduce synchronization costs. </para></description><method-group name="public member functions">
  2383. <method name="release"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Calls Calls <computeroutput>upstream_resource()-&gt;deallocate()</computeroutput> as necessary to release all allocated memory. [ Note: memory is released back to <computeroutput>upstream_resource()</computeroutput> even if deallocate has not been called for some of the allocated blocks. - end note ] </para></description></method>
  2384. <method name="upstream_resource" cv="const"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: The value of the upstream argument provided to the constructor of this object. </para></description></method>
  2385. <method name="options" cv="const"><type><classname>pool_options</classname></type><description><para><emphasis role="bold">Returns</emphasis>: The options that control the pooling behavior of this resource. The values in the returned struct may differ from those supplied to the pool resource constructor in that values of zero will be replaced with implementation-defined defaults and sizes may be rounded to unspecified granularity. </para></description></method>
  2386. <method name="pool_count" cv="const"><type>std::size_t</type><description><para><emphasis role="bold">Returns</emphasis>: The number of pools that will be used in the pool resource.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2387. <method name="pool_index" cv="const"><type>std::size_t</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The index of the pool that will be used to serve the allocation of <computeroutput>bytes</computeroutput>. Returns <computeroutput>pool_count()</computeroutput> if <computeroutput>bytes</computeroutput> is bigger than <computeroutput>options().largest_required_pool_block</computeroutput> (no pool will be used to serve this).</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2388. <method name="pool_next_blocks_per_chunk" cv="const"><type>std::size_t</type><parameter name="pool_idx"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>pool_idx &lt; pool_index()</computeroutput></para><para><emphasis role="bold">Returns</emphasis>: The number blocks that will be allocated in the next chunk from the pool specified by <computeroutput>pool_idx</computeroutput>.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2389. <method name="pool_block" cv="const"><type>std::size_t</type><parameter name="pool_idx"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>pool_idx &lt; pool_index()</computeroutput></para><para><emphasis role="bold">Returns</emphasis>: The number of bytes of the block that the specified <computeroutput>pool_idx</computeroutput> pool manages.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2390. <method name="pool_cached_blocks" cv="const"><type>std::size_t</type><parameter name="pool_idx"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>pool_idx &lt; pool_index()</computeroutput></para><para><emphasis role="bold">Returns</emphasis>: The number of blocks that the specified <computeroutput>pool_idx</computeroutput> pool has cached and will be served without calling the upstream_allocator.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2391. </method-group>
  2392. <constructor cv="noexcept"><parameter name="opts"><paramtype>const <classname>pool_options</classname> &amp;</paramtype></parameter><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>upstream</computeroutput> is the address of a valid memory resource.</para><para><emphasis role="bold">Effects</emphasis>: Constructs a pool resource object that will obtain memory from upstream whenever the pool resource is unable to satisfy a memory request from its own internal data structures. The resulting object will hold a copy of upstream, but will not own the resource to which upstream points. [ Note: The intention is that calls to upstream-&gt;allocate() will be substantially fewer than calls to this-&gt;allocate() in most cases. - end note The behavior of the pooling mechanism is tuned according to the value of the opts argument.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless upstream-&gt;allocate() throws. It is unspecified if or under what conditions this constructor calls upstream-&gt;allocate(). </para></description></constructor>
  2393. <constructor cv="noexcept"><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput><classname alt="boost::container::pmr::unsynchronized_pool_resource">unsynchronized_pool_resource</classname>(pool_options(), get_default_resource())</computeroutput>. </para></description></constructor>
  2394. <constructor specifiers="explicit" cv="noexcept"><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>unsynchronized_pool_resource(pool_options(), upstream)</computeroutput>. </para></description></constructor>
  2395. <constructor specifiers="explicit" cv="noexcept"><parameter name="opts"><paramtype>const <classname>pool_options</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>unsynchronized_pool_resource(opts, get_default_resource())</computeroutput>. </para></description></constructor>
  2396. <constructor cv="= delete"><parameter name=""><paramtype>const <classname>synchronized_pool_resource</classname> &amp;</paramtype></parameter></constructor>
  2397. <copy-assignment cv="= delete"><type><classname>synchronized_pool_resource</classname></type><parameter name=""><paramtype>const <classname>synchronized_pool_resource</classname> &amp;</paramtype></parameter></copy-assignment>
  2398. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Calls <computeroutput>this-&gt;release()</computeroutput>. </para></description></destructor>
  2399. <method-group name="protected member functions">
  2400. <method name="do_allocate" specifiers="virtual"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A pointer to allocated storage with a size of at least <computeroutput>bytes</computeroutput>. The size and alignment of the allocated memory shall meet the requirements for a class derived from <computeroutput><classname alt="boost::container::pmr::memory_resource">memory_resource</classname></computeroutput>.</para><para><emphasis role="bold">Effects</emphasis>: If the pool selected for a block of size bytes is unable to satisfy the memory request from its own internal data structures, it will call <computeroutput>upstream_resource()-&gt;allocate()</computeroutput> to obtain more memory. If <computeroutput>bytes</computeroutput> is larger than that which the largest pool can handle, then memory will be allocated using <computeroutput>upstream_resource()-&gt;allocate()</computeroutput>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless <computeroutput>upstream_resource()-&gt;allocate()</computeroutput> throws. </para></description></method>
  2401. <method name="do_deallocate" specifiers="virtual"><type>void</type><parameter name="p"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Return the memory at p to the pool. It is unspecified if or under what circumstances this operation will result in a call to <computeroutput>upstream_resource()-&gt;deallocate()</computeroutput>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2402. <method name="do_is_equal" cv="const noexcept" specifiers="virtual"><type>bool</type><parameter name="other"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>this == dynamic_cast&lt;const unsynchronized_pool_resource*&gt;(&amp;other)</computeroutput>. </para></description></method>
  2403. </method-group>
  2404. </class>
  2405. </namespace>
  2406. </namespace>
  2407. </namespace>
  2408. </header>
  2409. <header name="boost/container/pmr/unsynchronized_pool_resource.hpp">
  2410. <namespace name="boost">
  2411. <namespace name="container">
  2412. <namespace name="pmr">
  2413. <class name="unsynchronized_pool_resource"><inherit access="public">boost::container::pmr::memory_resource</inherit><description><para>A <classname alt="boost::container::pmr::unsynchronized_pool_resource">unsynchronized_pool_resource</classname> is a general-purpose memory resources having the following qualities:</para><para><itemizedlist>
  2414. <listitem><para>Each resource owns the allocated memory, and frees it on destruction, even if deallocate has not been called for some of the allocated blocks.</para>
  2415. </listitem><listitem><para>A pool resource consists of a collection of pools, serving requests for different block sizes. Each individual pool manages a collection of chunks that are in turn divided into blocks of uniform size, returned via calls to do_allocate. Each call to do_allocate(size, alignment) is dispatched to the pool serving the smallest blocks accommodating at least size bytes.</para>
  2416. </listitem><listitem><para>When a particular pool is exhausted, allocating a block from that pool results in the allocation of an additional chunk of memory from the upstream allocator (supplied at construction), thus replenishing the pool. With each successive replenishment, the chunk size obtained increases geometrically. [ Note: By allocating memory in chunks, the pooling strategy increases the chance that consecutive allocations will be close together in memory. - end note ]</para>
  2417. </listitem><listitem><para>Allocation requests that exceed the largest block size of any pool are fulfilled directly from the upstream allocator.</para>
  2418. </listitem><listitem><para>A <classname alt="boost::container::pmr::pool_options">pool_options</classname> struct may be passed to the pool resource constructors to tune the largest block size and the maximum chunk size.</para>
  2419. </listitem></itemizedlist>
  2420. </para><para>An <classname alt="boost::container::pmr::unsynchronized_pool_resource">unsynchronized_pool_resource</classname> class may not be accessed from multiple threads simultaneously and thus avoids the cost of synchronization entirely in single-threaded applications. </para></description><method-group name="public member functions">
  2421. <method name="release"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Calls Calls <computeroutput>upstream_resource()-&gt;deallocate()</computeroutput> as necessary to release all allocated memory. [ Note: memory is released back to <computeroutput>upstream_resource()</computeroutput> even if deallocate has not been called for some of the allocated blocks. - end note ] </para></description></method>
  2422. <method name="upstream_resource" cv="const"><type><classname>memory_resource</classname> *</type><description><para><emphasis role="bold">Returns</emphasis>: The value of the upstream argument provided to the constructor of this object. </para></description></method>
  2423. <method name="options" cv="const"><type><classname>pool_options</classname></type><description><para><emphasis role="bold">Returns</emphasis>: The options that control the pooling behavior of this resource. The values in the returned struct may differ from those supplied to the pool resource constructor in that values of zero will be replaced with implementation-defined defaults and sizes may be rounded to unspecified granularity. </para></description></method>
  2424. <method name="pool_count" cv="const"><type>std::size_t</type><description><para><emphasis role="bold">Returns</emphasis>: The number of pools that will be used in the pool resource.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2425. <method name="pool_index" cv="const"><type>std::size_t</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The index of the pool that will be used to serve the allocation of <computeroutput>bytes</computeroutput>. Returns <computeroutput>pool_count()</computeroutput> if <computeroutput>bytes</computeroutput> is bigger than <computeroutput>options().largest_required_pool_block</computeroutput> (no pool will be used to serve this).</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2426. <method name="pool_next_blocks_per_chunk" cv="const"><type>std::size_t</type><parameter name="pool_idx"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>pool_idx &lt; pool_index()</computeroutput></para><para><emphasis role="bold">Returns</emphasis>: The number blocks that will be allocated in the next chunk from the pool specified by <computeroutput>pool_idx</computeroutput>.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2427. <method name="pool_block" cv="const"><type>std::size_t</type><parameter name="pool_idx"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>pool_idx &lt; pool_index()</computeroutput></para><para><emphasis role="bold">Returns</emphasis>: The number of bytes of the block that the specified <computeroutput>pool_idx</computeroutput> pool manages.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2428. <method name="pool_cached_blocks" cv="const"><type>std::size_t</type><parameter name="pool_idx"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>pool_idx &lt; pool_index()</computeroutput></para><para><emphasis role="bold">Returns</emphasis>: The number of blocks that the specified <computeroutput>pool_idx</computeroutput> pool has cached and will be served without calling the upstream_allocator.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2429. </method-group>
  2430. <constructor cv="noexcept"><parameter name="opts"><paramtype>const <classname>pool_options</classname> &amp;</paramtype></parameter><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: <computeroutput>upstream</computeroutput> is the address of a valid memory resource.</para><para><emphasis role="bold">Effects</emphasis>: Constructs a pool resource object that will obtain memory from upstream whenever the pool resource is unable to satisfy a memory request from its own internal data structures. The resulting object will hold a copy of upstream, but will not own the resource to which upstream points. [ Note: The intention is that calls to upstream-&gt;allocate() will be substantially fewer than calls to this-&gt;allocate() in most cases. - end note The behavior of the pooling mechanism is tuned according to the value of the opts argument.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless upstream-&gt;allocate() throws. It is unspecified if or under what conditions this constructor calls upstream-&gt;allocate(). </para></description></constructor>
  2431. <constructor cv="noexcept"><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput><classname alt="boost::container::pmr::unsynchronized_pool_resource">unsynchronized_pool_resource</classname>(pool_options(), get_default_resource())</computeroutput>. </para></description></constructor>
  2432. <constructor specifiers="explicit" cv="noexcept"><parameter name="upstream"><paramtype><classname>memory_resource</classname> *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>unsynchronized_pool_resource(pool_options(), upstream)</computeroutput>. </para></description></constructor>
  2433. <constructor specifiers="explicit" cv="noexcept"><parameter name="opts"><paramtype>const <classname>pool_options</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>unsynchronized_pool_resource(opts, get_default_resource())</computeroutput>. </para></description></constructor>
  2434. <constructor cv="= delete"><parameter name=""><paramtype>const <classname>unsynchronized_pool_resource</classname> &amp;</paramtype></parameter></constructor>
  2435. <copy-assignment cv="= delete"><type><classname>unsynchronized_pool_resource</classname></type><parameter name=""><paramtype>const <classname>unsynchronized_pool_resource</classname> &amp;</paramtype></parameter></copy-assignment>
  2436. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Calls <computeroutput>this-&gt;release()</computeroutput>. </para></description></destructor>
  2437. <method-group name="protected member functions">
  2438. <method name="do_allocate" specifiers="virtual"><type>void *</type><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A pointer to allocated storage with a size of at least <computeroutput>bytes</computeroutput>. The size and alignment of the allocated memory shall meet the requirements for a class derived from <computeroutput><classname alt="boost::container::pmr::memory_resource">memory_resource</classname></computeroutput>.</para><para><emphasis role="bold">Effects</emphasis>: If the pool selected for a block of size bytes is unable to satisfy the memory request from its own internal data structures, it will call <computeroutput>upstream_resource()-&gt;allocate()</computeroutput> to obtain more memory. If <computeroutput>bytes</computeroutput> is larger than that which the largest pool can handle, then memory will be allocated using <computeroutput>upstream_resource()-&gt;allocate()</computeroutput>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless <computeroutput>upstream_resource()-&gt;allocate()</computeroutput> throws. </para></description></method>
  2439. <method name="do_deallocate" specifiers="virtual"><type>void</type><parameter name="p"><paramtype>void *</paramtype></parameter><parameter name="bytes"><paramtype>std::size_t</paramtype></parameter><parameter name="alignment"><paramtype>std::size_t</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Return the memory at p to the pool. It is unspecified if or under what circumstances this operation will result in a call to <computeroutput>upstream_resource()-&gt;deallocate()</computeroutput>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing. </para></description></method>
  2440. <method name="do_is_equal" cv="const noexcept" specifiers="virtual"><type>bool</type><parameter name="other"><paramtype>const <classname>memory_resource</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>this == dynamic_cast&lt;const unsynchronized_pool_resource*&gt;(&amp;other)</computeroutput>. </para></description></method>
  2441. </method-group>
  2442. </class>
  2443. </namespace>
  2444. </namespace>
  2445. </namespace>
  2446. </header>
  2447. <header name="boost/container/scoped_allocator.hpp">
  2448. <namespace name="boost">
  2449. <namespace name="container">
  2450. <class name="scoped_allocator_adaptor"><template>
  2451. <template-type-parameter name="OuterAlloc"/>
  2452. <template-nontype-parameter name="InnerAllocs"><type>typename ...</type></template-nontype-parameter>
  2453. </template><inherit access="public">dtl::scoped_allocator_adaptor_base&lt; OuterAlloc, InnerAllocs... &gt;</inherit><description><para>This class is a C++03-compatible implementation of std::scoped_allocator_adaptor. The class template <classname alt="boost::container::scoped_allocator_adaptor">scoped_allocator_adaptor</classname> is an allocator template that specifies the memory resource (the outer allocator) to be used by a container (as any other allocator does) and also specifies an inner allocator resource to be passed to the constructor of every element within the container.</para><para>This adaptor is instantiated with one outer and zero or more inner allocator types. If instantiated with only one allocator type, the inner allocator becomes the <classname alt="boost::container::scoped_allocator_adaptor">scoped_allocator_adaptor</classname> itself, thus using the same allocator resource for the container and every element within the container and, if the elements themselves are containers, each of their elements recursively. If instantiated with more than one allocator, the first allocator is the outer allocator for use by the container, the second allocator is passed to the constructors of the container's elements, and, if the elements themselves are containers, the third allocator is passed to the elements' elements, and so on. If containers are nested to a depth greater than the number of allocators, the last allocator is used repeatedly, as in the single-allocator case, for any remaining recursions.</para><para>[<emphasis role="bold">Note</emphasis>: The <classname alt="boost::container::scoped_allocator_adaptor">scoped_allocator_adaptor</classname> is derived from the outer allocator type so it can be substituted for the outer allocator type in most expressions. -end note]</para><para>In the construct member functions, <computeroutput>OUTERMOST(x)</computeroutput> is x if x does not have an <computeroutput>outer_allocator()</computeroutput> member function and <computeroutput>OUTERMOST(x.outer_allocator())</computeroutput> otherwise; <computeroutput>OUTERMOST_ALLOC_TRAITS(x)</computeroutput> is <computeroutput>allocator_traits&lt;decltype(OUTERMOST(x))&gt;</computeroutput>.</para><para>[<emphasis role="bold">Note</emphasis>: <computeroutput>OUTERMOST(x)</computeroutput> and <computeroutput>OUTERMOST_ALLOC_TRAITS(x)</computeroutput> are recursive operations. It is incumbent upon the definition of <computeroutput>outer_allocator()</computeroutput> to ensure that the recursion terminates. It will terminate for all instantiations of <classname alt="boost::container::scoped_allocator_adaptor">scoped_allocator_adaptor</classname>. -end note] </para></description><struct name="rebind"><template>
  2454. <template-type-parameter name="U"/>
  2455. </template><description><para>Type: Rebinds scoped allocator to <computeroutput>typedef <classname alt="boost::container::scoped_allocator_adaptor">scoped_allocator_adaptor</classname> &lt; typename outer_traits_type::template portable_rebind_alloc&lt;U&gt;::type , InnerAllocs... &gt;</computeroutput> </para></description><typedef name="other"><type><classname>scoped_allocator_adaptor</classname>&lt; typename outer_traits_type::template portable_rebind_alloc&lt; U &gt;::type, InnerAllocs... &gt;</type></typedef>
  2456. </struct><typedef name="outer_allocator_type"><type>OuterAlloc</type></typedef>
  2457. <typedef name="outer_traits_type"><description><para>Type: For exposition only </para></description><type><classname>allocator_traits</classname>&lt; OuterAlloc &gt;</type></typedef>
  2458. <typedef name="inner_allocator_type"><description><para>Type: <computeroutput>scoped_allocator_adaptor&lt;OuterAlloc&gt;</computeroutput> if <computeroutput>sizeof...(InnerAllocs)</computeroutput> is zero; otherwise, <computeroutput>scoped_allocator_adaptor&lt;InnerAllocs...&gt;</computeroutput>. </para></description><type>base_type::inner_allocator_type</type></typedef>
  2459. <typedef name="inner_traits_type"><type><classname>allocator_traits</classname>&lt; inner_allocator_type &gt;</type></typedef>
  2460. <typedef name="value_type"><type>outer_traits_type::value_type</type></typedef>
  2461. <typedef name="size_type"><type>outer_traits_type::size_type</type></typedef>
  2462. <typedef name="difference_type"><type>outer_traits_type::difference_type</type></typedef>
  2463. <typedef name="pointer"><type>outer_traits_type::pointer</type></typedef>
  2464. <typedef name="const_pointer"><type>outer_traits_type::const_pointer</type></typedef>
  2465. <typedef name="void_pointer"><type>outer_traits_type::void_pointer</type></typedef>
  2466. <typedef name="const_void_pointer"><type>outer_traits_type::const_void_pointer</type></typedef>
  2467. <typedef name="propagate_on_container_copy_assignment"><description><para>Type: A type with a constant boolean <computeroutput>value</computeroutput> == true if <computeroutput><classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: propagate_on_container_copy_assignment::value</computeroutput> is true for any <computeroutput>Allocator</computeroutput> in the set of <computeroutput>OuterAlloc</computeroutput> and <computeroutput>InnerAllocs...</computeroutput>, false otherwise. </para></description><type>base_type::propagate_on_container_copy_assignment</type></typedef>
  2468. <typedef name="propagate_on_container_move_assignment"><description><para>Type: A type with a constant boolean <computeroutput>value</computeroutput> == true if <computeroutput><classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: propagate_on_container_move_assignment::value</computeroutput> is true for any <computeroutput>Allocator</computeroutput> in the set of <computeroutput>OuterAlloc</computeroutput> and <computeroutput>InnerAllocs...</computeroutput>, false otherwise. </para></description><type>base_type::propagate_on_container_move_assignment</type></typedef>
  2469. <typedef name="propagate_on_container_swap"><description><para>Type: A type with a constant boolean <computeroutput>value</computeroutput> == true if <computeroutput><classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: propagate_on_container_swap::value</computeroutput> is true for any <computeroutput>Allocator</computeroutput> in the set of <computeroutput>OuterAlloc</computeroutput> and <computeroutput>InnerAllocs...</computeroutput>, false otherwise. </para></description><type>base_type::propagate_on_container_swap</type></typedef>
  2470. <typedef name="is_always_equal"><description><para>Type: A type with a constant boolean <computeroutput>value</computeroutput> == true if <computeroutput><classname alt="boost::container::allocator_traits">allocator_traits</classname>&lt;Allocator&gt;:: is_always_equal::value</computeroutput> is true for all <computeroutput>Allocator</computeroutput> in the set of <computeroutput>OuterAlloc</computeroutput> and <computeroutput>InnerAllocs...</computeroutput>, false otherwise. </para></description><type>base_type::is_always_equal</type></typedef>
  2471. <method-group name="public member functions">
  2472. <method name="swap"><type>void</type><parameter name="r"><paramtype><classname>scoped_allocator_adaptor</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: swaps *this with r. </para></description></method>
  2473. <method name="outer_allocator" cv="noexcept"><type>outer_allocator_type &amp;</type><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>static_cast&lt;OuterAlloc&amp;&gt;(*this)</computeroutput>. </para></description></method>
  2474. <method name="outer_allocator" cv="const noexcept"><type>const outer_allocator_type &amp;</type><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>static_cast&lt;const OuterAlloc&amp;&gt;(*this)</computeroutput>. </para></description></method>
  2475. <method name="inner_allocator" cv="noexcept"><type>inner_allocator_type &amp;</type><description><para><emphasis role="bold">Returns</emphasis>: *this if <computeroutput>sizeof...(InnerAllocs)</computeroutput> is zero; otherwise, inner. </para></description></method>
  2476. <method name="inner_allocator" cv="const noexcept"><type>inner_allocator_type const &amp;</type><description><para><emphasis role="bold">Returns</emphasis>: *this if <computeroutput>sizeof...(InnerAllocs)</computeroutput> is zero; otherwise, inner. </para></description></method>
  2477. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>allocator_traits&lt;OuterAlloc&gt;:: max_size(outer_allocator())</computeroutput>. </para></description></method>
  2478. <method name="destroy" cv="noexcept"><type>void</type><template>
  2479. <template-type-parameter name="T"/>
  2480. </template><parameter name="p"><paramtype>T *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: calls <computeroutput>OUTERMOST_ALLOC_TRAITS(*this):: destroy(OUTERMOST(*this), p)</computeroutput>. </para></description></method>
  2481. <method name="allocate"><type>pointer</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>allocator_traits&lt;OuterAlloc&gt;::allocate(outer_allocator(), n)</computeroutput>. </para></description></method>
  2482. <method name="allocate"><type>pointer</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="hint"><paramtype>const_void_pointer</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: <computeroutput>allocator_traits&lt;OuterAlloc&gt;::allocate(outer_allocator(), n, hint)</computeroutput>. </para></description></method>
  2483. <method name="deallocate"><type>void</type><parameter name="p"><paramtype>pointer</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: <computeroutput>allocator_traits&lt;OuterAlloc&gt;::deallocate(outer_allocator(), p, n)</computeroutput>. </para></description></method>
  2484. <method name="select_on_container_copy_construction" cv="const"><type><classname>scoped_allocator_adaptor</classname></type><description><para><emphasis role="bold">Returns</emphasis>: A new <classname alt="boost::container::scoped_allocator_adaptor">scoped_allocator_adaptor</classname> object where each allocator Allocator in the adaptor is initialized from the result of calling <computeroutput>allocator_traits&lt;Allocator&gt;::select_on_container_copy_construction()</computeroutput> on the corresponding allocator in *this. </para></description></method>
  2485. <method name="construct"><type>void</type><template>
  2486. <template-type-parameter name="T"/>
  2487. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  2488. </template><parameter name="p"><paramtype>T *</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: 1) If <computeroutput>uses_allocator&lt;T, inner_allocator_type&gt;::value</computeroutput> is false calls <computeroutput>OUTERMOST_ALLOC_TRAITS(*this):: construct(OUTERMOST(*this), p, std::forward&lt;Args&gt;(args)...)</computeroutput>.</para><para>2) Otherwise, if <computeroutput>uses_allocator&lt;T, inner_allocator_type&gt;::value</computeroutput> is true and <computeroutput>is_constructible&lt;T, allocator_arg_t, inner_allocator_type, Args...&gt;:: value</computeroutput> is true, calls <computeroutput>OUTERMOST_ALLOC_TRAITS(*this):: construct(OUTERMOST(*this), p, allocator_arg, inner_allocator(), std::forward&lt;Args&gt;(args)...)</computeroutput>.</para><para>[<emphasis role="bold">Note</emphasis>: In compilers without advanced decltype SFINAE support, <computeroutput>is_constructible</computeroutput> can't be implemented so that condition will be replaced by constructible_with_allocator_prefix&lt;T&gt;::value. -end note]</para><para>3) Otherwise, if uses_allocator&lt;T, inner_allocator_type&gt;::value is true and <computeroutput>is_constructible&lt;T, Args..., inner_allocator_type&gt;:: value</computeroutput> is true, calls <computeroutput>OUTERMOST_ALLOC_TRAITS(*this):: construct(OUTERMOST(*this), p, std::forward&lt;Args&gt;(args)..., inner_allocator())</computeroutput>.</para><para>[<emphasis role="bold">Note</emphasis>: In compilers without advanced decltype SFINAE support, <computeroutput>is_constructible</computeroutput> can't be implemented so that condition will be replaced by <computeroutput>constructible_with_allocator_suffix&lt;T&gt;:: value</computeroutput>. -end note]</para><para>4) Otherwise, the program is ill-formed.</para><para>[<emphasis role="bold">Note</emphasis>: An error will result if <computeroutput><classname alt="boost::container::uses_allocator">uses_allocator</classname></computeroutput> evaluates to true but the specific constructor does not take an allocator. This definition prevents a silent failure to pass an inner allocator to a contained element. -end note] </para></description></method>
  2489. </method-group>
  2490. <constructor><description><para><emphasis role="bold">Effects</emphasis>: value-initializes the OuterAlloc base class and the inner allocator object. </para></description></constructor>
  2491. <destructor/>
  2492. <constructor><parameter name="other"><paramtype>const <classname>scoped_allocator_adaptor</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: initializes each allocator within the adaptor with the corresponding allocator from other. </para></description></constructor>
  2493. <constructor><parameter name="other"><paramtype><classname>scoped_allocator_adaptor</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: move constructs each allocator within the adaptor with the corresponding allocator from other. </para></description></constructor>
  2494. <constructor><template>
  2495. <template-type-parameter name="OuterA2"/>
  2496. </template><parameter name="outerAlloc"><paramtype>OuterA2 &amp;&amp;</paramtype></parameter><parameter name="innerAllocs"><paramtype>const InnerAllocs &amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: OuterAlloc shall be constructible from OuterA2.</para><para><emphasis role="bold">Effects</emphasis>: initializes the OuterAlloc base class with boost::forward&lt;OuterA2&gt;(outerAlloc) and inner with innerAllocs...(hence recursively initializing each allocator within the adaptor with the corresponding allocator from the argument list). </para></description></constructor>
  2497. <constructor><template>
  2498. <template-type-parameter name="OuterA2"/>
  2499. </template><parameter name="other"><paramtype>const <classname>scoped_allocator_adaptor</classname>&lt; OuterA2, InnerAllocs... &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: OuterAlloc shall be constructible from OuterA2.</para><para><emphasis role="bold">Effects</emphasis>: initializes each allocator within the adaptor with the corresponding allocator from other. </para></description></constructor>
  2500. <constructor><template>
  2501. <template-type-parameter name="OuterA2"/>
  2502. </template><parameter name="other"><paramtype><classname>scoped_allocator_adaptor</classname>&lt; OuterA2, InnerAllocs... &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: OuterAlloc shall be constructible from OuterA2.</para><para><emphasis role="bold">Effects</emphasis>: initializes each allocator within the adaptor with the corresponding allocator rvalue from other. </para></description></constructor>
  2503. <copy-assignment><type><classname>scoped_allocator_adaptor</classname> &amp;</type><parameter name="other"><paramtype>const <classname>scoped_allocator_adaptor</classname> &amp;</paramtype></parameter></copy-assignment>
  2504. <copy-assignment><type><classname>scoped_allocator_adaptor</classname> &amp;</type><parameter name="other"><paramtype><classname>scoped_allocator_adaptor</classname> &amp;&amp;</paramtype></parameter></copy-assignment>
  2505. <method-group name="friend functions">
  2506. <method name="swap"><type>friend void</type><parameter name="l"><paramtype><classname>scoped_allocator_adaptor</classname> &amp;</paramtype></parameter><parameter name="r"><paramtype><classname>scoped_allocator_adaptor</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: swaps *this with r. </para></description></method>
  2507. </method-group>
  2508. </class>
  2509. <function name="operator=="><type>bool</type><template>
  2510. <template-type-parameter name="OuterA1"/>
  2511. <template-type-parameter name="OuterA2"/>
  2512. <template-nontype-parameter name=""><type>BOOST_CONTAINER_SCOPEDALLOC_ALLINNERCLASS</type></template-nontype-parameter>
  2513. </template><parameter name="a"><paramtype>const <classname>scoped_allocator_adaptor</classname>&lt; OuterA1, InnerAllocs... &gt; &amp;</paramtype></parameter><parameter name="b"><paramtype>const <classname>scoped_allocator_adaptor</classname>&lt; OuterA2, InnerAllocs... &gt; &amp;</paramtype></parameter></function>
  2514. <function name="operator!="><type>bool</type><template>
  2515. <template-type-parameter name="OuterA1"/>
  2516. <template-type-parameter name="OuterA2"/>
  2517. <template-nontype-parameter name=""><type>BOOST_CONTAINER_SCOPEDALLOC_ALLINNERCLASS</type></template-nontype-parameter>
  2518. </template><parameter name="a"><paramtype>const <classname>scoped_allocator_adaptor</classname>&lt; OuterA1, InnerAllocs... &gt; &amp;</paramtype></parameter><parameter name="b"><paramtype>const <classname>scoped_allocator_adaptor</classname>&lt; OuterA2, InnerAllocs... &gt; &amp;</paramtype></parameter></function>
  2519. </namespace>
  2520. </namespace>
  2521. </header>
  2522. <header name="boost/container/scoped_allocator_fwd.hpp">
  2523. <para>This header file forward declares <classname alt="boost::container::scoped_allocator_adaptor">boost::container::scoped_allocator_adaptor</classname> </para><namespace name="boost">
  2524. <namespace name="container">
  2525. </namespace>
  2526. </namespace>
  2527. </header>
  2528. <header name="boost/container/set.hpp">
  2529. <namespace name="boost">
  2530. <namespace name="container">
  2531. <class name="multiset"><template>
  2532. <template-type-parameter name="Key"><purpose><para>is the type to be inserted in the set, which is also the key_type </para></purpose></template-type-parameter>
  2533. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the comparison functor used to order keys </para></purpose></template-type-parameter>
  2534. <template-type-parameter name="Allocator"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt;Key&gt;</default><purpose><para>is the allocator to be used to allocate memory for this container </para></purpose></template-type-parameter>
  2535. <template-type-parameter name="Options"><default>tree_assoc_defaults</default><purpose><para>is an packed option type generated using using <classname alt="boost::container::tree_assoc_options">boost::container::tree_assoc_options</classname>. </para></purpose></template-type-parameter>
  2536. </template><description><para>A multiset is a kind of associative container that supports equivalent keys (possibly contains multiple copies of the same key value) and provides for fast retrieval of the keys themselves. Class multiset supports bidirectional iterators.</para><para>A multiset satisfies all of the requirements of a container and of a reversible container, and of an associative container). multiset also provides most operations described for duplicate keys.</para><para>
  2537. </para></description><typedef name="key_type"><type>Key</type></typedef>
  2538. <typedef name="value_type"><type>Key</type></typedef>
  2539. <typedef name="key_compare"><type>Compare</type></typedef>
  2540. <typedef name="value_compare"><type>key_compare</type></typedef>
  2541. <typedef name="allocator_type"><type>base_t::allocator_type</type></typedef>
  2542. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  2543. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  2544. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  2545. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  2546. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  2547. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  2548. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  2549. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  2550. <typedef name="iterator"><type>implementation_defined</type></typedef>
  2551. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  2552. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  2553. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  2554. <typedef name="node_type"><type>implementation_defined</type></typedef>
  2555. <method-group name="public member functions">
  2556. <method name="get_allocator" cv="const"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2557. <method name="get_stored_allocator"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2558. <method name="get_stored_allocator" cv="const"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2559. <method name="begin"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  2560. <method name="begin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2561. <method name="cbegin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2562. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2563. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2564. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2565. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2566. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2567. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2568. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2569. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2570. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2571. <method name="empty" cv="const"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2572. <method name="size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2573. <method name="max_size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2574. <method name="emplace"><type>iterator</type><template>
  2575. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  2576. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type Key constructed with std::forward&lt;Args&gt;(args)... and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2577. <method name="emplace_hint"><type>iterator</type><template>
  2578. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  2579. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type Key constructed with std::forward&lt;Args&gt;(args)...</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2580. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2581. <method name="insert"><type>iterator</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2582. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2583. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2584. <method name="insert"><type>void</type><template>
  2585. <template-type-parameter name="InputIterator"/>
  2586. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) .</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from first to last) </para></description></method>
  2587. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(),il.end()) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from il.begin() to il.end()) </para></description></method>
  2588. <method name="insert"><type>iterator</type><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move-constructed from x and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2589. <method name="insert"><type>iterator</type><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2590. <method name="merge"><type>void</type><template>
  2591. <template-type-parameter name="C2"/>
  2592. </template><parameter name="source"><paramtype><classname>multiset</classname>&lt; Key, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2593. <method name="merge"><type>void</type><template>
  2594. <template-type-parameter name="C2"/>
  2595. </template><parameter name="source"><paramtype><classname>multiset</classname>&lt; Key, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2596. <method name="merge"><type>void</type><template>
  2597. <template-type-parameter name="C2"/>
  2598. </template><parameter name="source"><paramtype><classname>set</classname>&lt; Key, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2599. <method name="merge"><type>void</type><template>
  2600. <template-type-parameter name="C2"/>
  2601. </template><parameter name="source"><paramtype><classname>set</classname>&lt; Key, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Extracts each element in source and insert it into a using the comparison object of *this.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2602. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time </para></description></method>
  2603. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()) + count(k) </para></description></method>
  2604. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+N where N is the distance from first to last. </para></description></method>
  2605. <method name="extract"><type>node_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the element pointed to by "position".</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant. </para></description></method>
  2606. <method name="extract"><type>node_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element in the container with key equivalent to k.</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element if found, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  2607. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2608. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  2609. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2610. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2611. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2612. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2613. <method name="find"><type>iterator</type><template>
  2614. <template-type-parameter name="K"/>
  2615. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2616. <method name="find" cv="const"><type>const_iterator</type><template>
  2617. <template-type-parameter name="K"/>
  2618. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2619. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  2620. <method name="count" cv="const"><type>size_type</type><template>
  2621. <template-type-parameter name="K"/>
  2622. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  2623. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  2624. <method name="contains" cv="const"><type>bool</type><template>
  2625. <template-type-parameter name="K"/>
  2626. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  2627. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2628. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2629. <method name="lower_bound"><type>iterator</type><template>
  2630. <template-type-parameter name="K"/>
  2631. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2632. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  2633. <template-type-parameter name="K"/>
  2634. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2635. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2636. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2637. <method name="upper_bound"><type>iterator</type><template>
  2638. <template-type-parameter name="K"/>
  2639. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2640. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  2641. <template-type-parameter name="K"/>
  2642. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2643. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2644. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2645. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  2646. <template-type-parameter name="K"/>
  2647. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2648. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  2649. <template-type-parameter name="K"/>
  2650. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2651. <method name="rebalance"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.</para><para><emphasis role="bold">Complexity</emphasis>: Linear </para></description></method>
  2652. </method-group>
  2653. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty set.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2654. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2655. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2656. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2657. <constructor><template>
  2658. <template-type-parameter name="InputIterator"/>
  2659. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2660. <constructor><template>
  2661. <template-type-parameter name="InputIterator"/>
  2662. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2663. <constructor><template>
  2664. <template-type-parameter name="InputIterator"/>
  2665. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2666. <constructor><template>
  2667. <template-type-parameter name="InputIterator"/>
  2668. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2669. <constructor><template>
  2670. <template-type-parameter name="InputIterator"/>
  2671. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multiset and and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2672. <constructor><template>
  2673. <template-type-parameter name="InputIterator"/>
  2674. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multiset using the specified comparison object and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2675. <constructor><template>
  2676. <template-type-parameter name="InputIterator"/>
  2677. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multiset using the specified comparison object and allocator, and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2678. <constructor><template>
  2679. <template-type-parameter name="InputIterator"/>
  2680. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty multiset using the specified allocator and inserts elements from the ordered range [first ,last ). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2681. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2682. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2683. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2684. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2685. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2686. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2687. <constructor><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2688. <constructor><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a set.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  2689. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>multiset</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a set. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  2690. <constructor><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a set using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  2691. <constructor><parameter name="x"><paramtype><classname>multiset</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a set using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  2692. <copy-assignment><type><classname>multiset</classname> &amp;</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  2693. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>multiset</classname> &amp;</type><parameter name="x"><paramtype><classname>multiset</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: this-&gt;swap(x.get()).</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  2694. <copy-assignment><type><classname>multiset</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy all elements from il to *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in il.size(). </para></description></copy-assignment>
  2695. <method-group name="friend functions">
  2696. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2697. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2698. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2699. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2700. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2701. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2702. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>multiset</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>multiset</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2703. </method-group>
  2704. </class><class name="set"><template>
  2705. <template-type-parameter name="Key"><purpose><para>is the type to be inserted in the set, which is also the key_type </para></purpose></template-type-parameter>
  2706. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default><purpose><para>is the comparison functor used to order keys </para></purpose></template-type-parameter>
  2707. <template-type-parameter name="Allocator"><default><classname alt="boost::container::new_allocator">new_allocator</classname>&lt;Key&gt;</default><purpose><para>is the allocator to be used to allocate memory for this container </para></purpose></template-type-parameter>
  2708. <template-type-parameter name="Options"><default>void</default><purpose><para>is an packed option type generated using using <classname alt="boost::container::tree_assoc_options">boost::container::tree_assoc_options</classname>. </para></purpose></template-type-parameter>
  2709. </template><description><para>A set is a kind of associative container that supports unique keys (contains at most one of each key value) and provides for fast retrieval of the keys themselves. Class set supports bidirectional iterators.</para><para>A set satisfies all of the requirements of a container and of a reversible container , and of an associative container. A set also provides most operations described in for unique keys.</para><para>
  2710. </para></description><typedef name="key_type"><type>Key</type></typedef>
  2711. <typedef name="value_type"><type>Key</type></typedef>
  2712. <typedef name="key_compare"><type>Compare</type></typedef>
  2713. <typedef name="value_compare"><type>key_compare</type></typedef>
  2714. <typedef name="allocator_type"><type>base_t::allocator_type</type></typedef>
  2715. <typedef name="allocator_traits_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  2716. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  2717. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  2718. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  2719. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  2720. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  2721. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  2722. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  2723. <typedef name="iterator"><type>implementation_defined</type></typedef>
  2724. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  2725. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  2726. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  2727. <typedef name="node_type"><type>implementation_defined</type></typedef>
  2728. <typedef name="insert_return_type"><type>implementation_defined</type></typedef>
  2729. <method-group name="public member functions">
  2730. <method name="get_allocator" cv="const"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the allocator that was passed to the object's constructor.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2731. <method name="get_stored_allocator"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2732. <method name="get_stored_allocator" cv="const"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2733. <method name="begin"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  2734. <method name="begin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2735. <method name="cbegin" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2736. <method name="end"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2737. <method name="end" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2738. <method name="cend" cv="const"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2739. <method name="rbegin"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2740. <method name="rbegin" cv="const"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2741. <method name="crbegin" cv="const"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2742. <method name="rend"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2743. <method name="rend" cv="const"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2744. <method name="crend" cv="const"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2745. <method name="empty" cv="const"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the container contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2746. <method name="size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2747. <method name="max_size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2748. <method name="emplace"><type>std::pair&lt; iterator, bool &gt;</type><template>
  2749. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  2750. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object x of type Key constructed with std::forward&lt;Args&gt;(args)... if and only if there is no element in the container with equivalent value. and returns the iterator pointing to the newly inserted element.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or Key's in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2751. <method name="emplace_hint"><type>iterator</type><template>
  2752. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  2753. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type Key constructed with std::forward&lt;Args&gt;(args)... if and only if there is no element in the container with equivalent value. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2754. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts x if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2755. <method name="insert"><type>std::pair&lt; iterator, bool &gt;</type><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a new value from x if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2756. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x in the container if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2757. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>value_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an element move constructed from x in the container. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2758. <method name="insert"><type>void</type><template>
  2759. <template-type-parameter name="InputIterator"/>
  2760. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first, last are not iterators into *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [first,last) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from first to last) </para></description></method>
  2761. <method name="insert"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: inserts each element from the range [il.begin(),il.end()) if and only if there is no element with key equivalent to the key of that element.</para><para><emphasis role="bold">Complexity</emphasis>: At most N log(size()+N) (N is the distance from il.begin() to il.end()) </para></description></method>
  2762. <method name="insert"><type>insert_return_type</type><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a new value_type move constructed from the pair if and only if there is no element in the container with key equivalent to the key of x.</para><para><emphasis role="bold">Returns</emphasis>: The bool component of the returned pair is true if and only if the insertion takes place, and the iterator component of the pair points to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2763. <method name="insert"><type>insert_return_type</type><parameter name="hint"><paramtype>const_iterator</paramtype></parameter><parameter name="nh"><paramtype>node_type &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a new value from x if and only if there is no element in the container with key equivalent to the key of x. p is a hint pointing to where the insert should start to search.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the element with key equivalent to the key of x.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic in general, but amortized constant if t is inserted right before p. </para></description></method>
  2764. <method name="merge"><type>void</type><template>
  2765. <template-type-parameter name="C2"/>
  2766. </template><parameter name="source"><paramtype><classname>set</classname>&lt; Key, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2767. <method name="merge"><type>void</type><template>
  2768. <template-type-parameter name="C2"/>
  2769. </template><parameter name="source"><paramtype><classname>set</classname>&lt; Key, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2770. <method name="merge"><type>void</type><template>
  2771. <template-type-parameter name="C2"/>
  2772. </template><parameter name="source"><paramtype><classname>multiset</classname>&lt; Key, C2, Allocator, Options &gt; &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2773. <method name="merge"><type>void</type><template>
  2774. <template-type-parameter name="C2"/>
  2775. </template><parameter name="source"><paramtype><classname>multiset</classname>&lt; Key, C2, Allocator, Options &gt; &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: this-&gt;get_allocator() == source.get_allocator().</para><para><emphasis role="bold">Effects</emphasis>: Attempts to extract each element in source and insert it into a using the comparison object of *this. If there is an element in a with key equivalent to the key of an element from source, then that element is not extracted from source.</para><para><emphasis role="bold">Postcondition</emphasis>: Pointers and references to the transferred elements of source refer to those same elements but as members of *this. Iterators referring to the transferred elements will continue to refer to their elements, but they now behave as iterators into *this, not into source.</para><para><emphasis role="bold">Throws</emphasis>: Nothing unless the comparison object throws.</para><para><emphasis role="bold">Complexity</emphasis>: N log(size() + N) (N has the value source.size()) </para></description></method>
  2776. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element pointed to by p.</para><para><emphasis role="bold">Returns</emphasis>: Returns an iterator pointing to the element immediately following q prior to the element being erased. If no such element exists, returns end().</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time </para></description></method>
  2777. <method name="erase"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all elements in the container with key equivalent to x.</para><para><emphasis role="bold">Returns</emphasis>: Returns the number of erased elements.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()) + count(k) </para></description></method>
  2778. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements in the range [first, last).</para><para><emphasis role="bold">Returns</emphasis>: Returns last.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+N where N is the distance from first to last. </para></description></method>
  2779. <method name="extract"><type>node_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the element pointed to by "position".</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant. </para></description></method>
  2780. <method name="extract"><type>node_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element in the container with key equivalent to k.</para><para><emphasis role="bold">Returns</emphasis>: A node_type owning the element if found, otherwise an empty node_type.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  2781. <method name="swap" cv="noexcept(allocator_traits_type::is_always_equal::value &amp;&amp;boost::container::dtl::is_nothrow_swappable&lt; Compare &gt;::value))"><type>void</type><parameter name="x"><paramtype><classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2782. <method name="clear"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: erase(begin(),end()).</para><para><emphasis role="bold">Postcondition</emphasis>: size() == 0.</para><para><emphasis role="bold">Complexity</emphasis>: linear in size(). </para></description></method>
  2783. <method name="key_comp" cv="const"><type>key_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the comparison object out of which a was constructed.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2784. <method name="value_comp" cv="const"><type>value_compare</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an object of value_compare constructed out of the comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2785. <method name="find"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2786. <method name="find" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2787. <method name="find"><type>iterator</type><template>
  2788. <template-type-parameter name="K"/>
  2789. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2790. <method name="find" cv="const"><type>const_iterator</type><template>
  2791. <template-type-parameter name="K"/>
  2792. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const_iterator pointing to an element with the key equivalent to x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic. </para></description></method>
  2793. <method name="count" cv="const"><type>size_type</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  2794. <method name="count" cv="const"><type>size_type</type><template>
  2795. <template-type-parameter name="K"/>
  2796. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: The number of elements with key equivalent to x.</para><para><emphasis role="bold">Complexity</emphasis>: log(size())+count(k) </para></description></method>
  2797. <method name="contains" cv="const"><type>bool</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  2798. <method name="contains" cv="const"><type>bool</type><template>
  2799. <template-type-parameter name="K"/>
  2800. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: Returns true if there is an element with key equivalent to key in the container, otherwise false.</para><para><emphasis role="bold">Complexity</emphasis>: log(size()). </para></description></method>
  2801. <method name="lower_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2802. <method name="lower_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2803. <method name="lower_bound"><type>iterator</type><template>
  2804. <template-type-parameter name="K"/>
  2805. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2806. <method name="lower_bound" cv="const"><type>const_iterator</type><template>
  2807. <template-type-parameter name="K"/>
  2808. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key not less than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2809. <method name="upper_bound"><type>iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2810. <method name="upper_bound" cv="const"><type>const_iterator</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2811. <method name="upper_bound"><type>iterator</type><template>
  2812. <template-type-parameter name="K"/>
  2813. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: An iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2814. <method name="upper_bound" cv="const"><type>const_iterator</type><template>
  2815. <template-type-parameter name="K"/>
  2816. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Returns</emphasis>: A const iterator pointing to the first element with key greater than x, or end() if such an element is not found.</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2817. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2818. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><parameter name="x"><paramtype>const key_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2819. <method name="equal_range"><type>std::pair&lt; iterator, iterator &gt;</type><template>
  2820. <template-type-parameter name="K"/>
  2821. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2822. <method name="equal_range" cv="const"><type>std::pair&lt; const_iterator, const_iterator &gt;</type><template>
  2823. <template-type-parameter name="K"/>
  2824. </template><parameter name="x"><paramtype>const K &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: This overload is available only if key_compare::is_transparent exists.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to std::make_pair(this-&gt;lower_bound(k), this-&gt;upper_bound(k)).</para><para><emphasis role="bold">Complexity</emphasis>: Logarithmic </para></description></method>
  2825. <method name="rebalance"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Rebalances the tree. It's a no-op for Red-Black and AVL trees.</para><para><emphasis role="bold">Complexity</emphasis>: Linear </para></description></method>
  2826. </method-group>
  2827. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value &amp;&amp;dtl::is_nothrow_default_constructible&lt; Compare &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs an empty set.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2828. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2829. <constructor specifiers="explicit"><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2830. <constructor><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  2831. <constructor><template>
  2832. <template-type-parameter name="InputIterator"/>
  2833. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2834. <constructor><template>
  2835. <template-type-parameter name="InputIterator"/>
  2836. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2837. <constructor><template>
  2838. <template-type-parameter name="InputIterator"/>
  2839. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2840. <constructor><template>
  2841. <template-type-parameter name="InputIterator"/>
  2842. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the range [first ,last ).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [first ,last ) is already sorted using the predicate and otherwise N logN, where N is last - first. </para></description></constructor>
  2843. <constructor><template>
  2844. <template-type-parameter name="InputIterator"/>
  2845. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2846. <constructor><template>
  2847. <template-type-parameter name="InputIterator"/>
  2848. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2849. <constructor><template>
  2850. <template-type-parameter name="InputIterator"/>
  2851. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2852. <constructor><template>
  2853. <template-type-parameter name="InputIterator"/>
  2854. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator and inserts elements from the ordered unique range [first ,last). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [first ,last) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2855. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2856. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2857. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2858. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the range [il.begin(), il.end()).</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N if the range [il.begin(), il.end()) is already sorted using the predicate and otherwise N logN, where N is il.begin() - il.end(). </para></description></constructor>
  2859. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2860. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2861. <constructor><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="comp"><paramtype>const Compare &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs an empty set using the specified comparison object and allocator, and inserts elements from the ordered unique range [il.begin(), il.end()). This function is more efficient than the normal range creation for ordered ranges.</para><para><emphasis role="bold">Requires</emphasis>: [il.begin(), il.end()) must be ordered according to the predicate and must be unique values.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in N.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></constructor>
  2862. <constructor><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a set.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  2863. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; Compare &gt;::value))"><parameter name="x"><paramtype><classname>set</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a set. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Postcondition</emphasis>: x is emptied. </para></description></constructor>
  2864. <constructor><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a set using the specified allocator.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></constructor>
  2865. <constructor><parameter name="x"><paramtype><classname>set</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructs a set using the specified allocator. Constructs *this using x's resources.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  2866. <copy-assignment><type><classname>set</classname> &amp;</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this a copy of x.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in x.size(). </para></description></copy-assignment>
  2867. <copy-assignment cv="noexcept((allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value) &amp;&amp;boost::container::dtl::is_nothrow_move_assignable&lt; Compare &gt;::value))"><type><classname>set</classname> &amp;</type><parameter name="x"><paramtype><classname>set</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: this-&gt;swap(x.get()).</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  2868. <copy-assignment><type><classname>set</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy all elements from il to *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear in il.size(). </para></description></copy-assignment>
  2869. <method-group name="friend functions">
  2870. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2871. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2872. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2873. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2874. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2875. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  2876. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>set</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>set</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2877. </method-group>
  2878. </class>
  2879. <function name="set"><type/><template>
  2880. <template-type-parameter name="InputIterator"/>
  2881. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  2882. <function name="set"><type/><template>
  2883. <template-type-parameter name="InputIterator"/>
  2884. <template-type-parameter name="AllocatorOrCompare"/>
  2885. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  2886. <function name="set"><type/><template>
  2887. <template-type-parameter name="InputIterator"/>
  2888. <template-type-parameter name="Compare"/>
  2889. <template-type-parameter name="Allocator"/>
  2890. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  2891. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  2892. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  2893. <function name="set"><type/><template>
  2894. <template-type-parameter name="InputIterator"/>
  2895. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  2896. <function name="set"><type/><template>
  2897. <template-type-parameter name="InputIterator"/>
  2898. <template-type-parameter name="AllocatorOrCompare"/>
  2899. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  2900. <function name="set"><type/><template>
  2901. <template-type-parameter name="InputIterator"/>
  2902. <template-type-parameter name="Compare"/>
  2903. <template-type-parameter name="Allocator"/>
  2904. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  2905. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  2906. </template><parameter name=""><paramtype><classname>ordered_unique_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  2907. <function name="multiset"><type/><template>
  2908. <template-type-parameter name="InputIterator"/>
  2909. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  2910. <function name="multiset"><type/><template>
  2911. <template-type-parameter name="InputIterator"/>
  2912. <template-type-parameter name="AllocatorOrCompare"/>
  2913. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  2914. <function name="multiset"><type/><template>
  2915. <template-type-parameter name="InputIterator"/>
  2916. <template-type-parameter name="Compare"/>
  2917. <template-type-parameter name="Allocator"/>
  2918. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  2919. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  2920. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  2921. <function name="multiset"><type/><template>
  2922. <template-type-parameter name="InputIterator"/>
  2923. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  2924. <function name="multiset"><type/><template>
  2925. <template-type-parameter name="InputIterator"/>
  2926. <template-type-parameter name="AllocatorOrCompare"/>
  2927. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>AllocatorOrCompare const &amp;</paramtype></parameter></function>
  2928. <function name="multiset"><type/><template>
  2929. <template-type-parameter name="InputIterator"/>
  2930. <template-type-parameter name="Compare"/>
  2931. <template-type-parameter name="Allocator"/>
  2932. <template-type-parameter name=""><default>dtl::require_nonallocator_t&lt;Compare&gt;</default></template-type-parameter>
  2933. <template-type-parameter name=""><default>dtl::require_allocator_t&lt;Allocator&gt;</default></template-type-parameter>
  2934. </template><parameter name=""><paramtype><classname>ordered_range_t</classname></paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Compare const &amp;</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  2935. </namespace>
  2936. </namespace>
  2937. </header>
  2938. <header name="boost/container/pmr/set.hpp">
  2939. <namespace name="boost">
  2940. <namespace name="container">
  2941. <namespace name="pmr">
  2942. <struct name="multiset_of"><template>
  2943. <template-type-parameter name="Key"/>
  2944. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  2945. <template-type-parameter name="Options"><default>void</default></template-type-parameter>
  2946. </template><description><para>A portable metafunction to obtain a multiset that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::multiset</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt;, Options &gt;</type></typedef>
  2947. </struct><struct name="set_of"><template>
  2948. <template-type-parameter name="Key"/>
  2949. <template-type-parameter name="Compare"><default>std::less&lt;Key&gt;</default></template-type-parameter>
  2950. <template-type-parameter name="Options"><default>void</default></template-type-parameter>
  2951. </template><description><para>A portable metafunction to obtain a set that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::set</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt;, Options &gt;</type></typedef>
  2952. </struct><typedef name="set"><type><classname>boost::container::set</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt;, Options &gt;</type></typedef>
  2953. <typedef name="multiset"><type><classname>boost::container::multiset</classname>&lt; Key, Compare, <classname>polymorphic_allocator</classname>&lt; Key &gt;, Options &gt;</type></typedef>
  2954. </namespace>
  2955. </namespace>
  2956. </namespace>
  2957. </header>
  2958. <header name="boost/container/slist.hpp">
  2959. <namespace name="boost">
  2960. <namespace name="container">
  2961. <class name="slist"><template>
  2962. <template-type-parameter name="T"><purpose><para>The type of object that is stored in the list </para></purpose></template-type-parameter>
  2963. <template-type-parameter name="Allocator"><default>void</default><purpose><para>The allocator used for all internal memory management, use void for the default allocator </para></purpose></template-type-parameter>
  2964. </template><inherit access="protected">dtl::node_alloc_holder&lt; real_allocator&lt; T, Allocator &gt;::type, dtl::intrusive_slist_type&lt; real_allocator&lt; T, Allocator &gt;::type &gt;::type &gt;</inherit><description><para>An slist is a singly linked list: a list where each element is linked to the next element, but not to the previous element. That is, it is a Sequence that supports forward but not backward traversal, and (amortized) constant time insertion and removal of elements. Slists, like lists, have the important property that insertion and splicing do not invalidate iterators to list elements, and that even removal invalidates only the iterators that point to the elements that are removed. The ordering of iterators may be changed (that is, slist&lt;T&gt;::iterator might have a different predecessor or successor after a list operation than it did before), but the iterators themselves will not be invalidated or made to point to different elements unless that invalidation or mutation is explicit.</para><para>The main difference between slist and list is that list's iterators are bidirectional iterators, while slist's iterators are forward iterators. This means that slist is less versatile than list; frequently, however, bidirectional iterators are unnecessary. You should usually use slist unless you actually need the extra functionality of list, because singly linked lists are smaller and faster than double linked lists.</para><para>Important performance note: like every other Sequence, slist defines the member functions insert and erase. Using these member functions carelessly, however, can result in disastrously slow programs. The problem is that insert's first argument is an iterator p, and that it inserts the new element(s) before p. This means that insert must find the iterator just before p; this is a constant-time operation for list, since list has bidirectional iterators, but for slist it must find that iterator by traversing the list from the beginning up to p. In other words: insert and erase are slow operations anywhere but near the beginning of the slist.</para><para>Slist provides the member functions insert_after and erase_after, which are constant time operations: you should always use insert_after and erase_after whenever possible. If you find that insert_after and erase_after aren't adequate for your needs, and that you often need to use insert and erase in the middle of the list, then you should probably use list instead of slist.</para><para>
  2965. </para></description><typedef name="value_type"><type>T</type></typedef>
  2966. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::pointer</type></typedef>
  2967. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::const_pointer</type></typedef>
  2968. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::reference</type></typedef>
  2969. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::const_reference</type></typedef>
  2970. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::size_type</type></typedef>
  2971. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::difference_type</type></typedef>
  2972. <typedef name="allocator_type"><type>ValueAllocator</type></typedef>
  2973. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  2974. <typedef name="iterator"><type>implementation_defined</type></typedef>
  2975. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  2976. <method-group name="public member functions">
  2977. <method name="assign"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="val"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the n copies of val to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  2978. <method name="assign"><type>void</type><template>
  2979. <template-type-parameter name="InpIt"/>
  2980. </template><parameter name="first"><paramtype>InpIt</paramtype></parameter><parameter name="last"><paramtype>InpIt</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the range [first, last) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  2981. <method name="assign"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the range [il.begin(), il.end()) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to range [il.begin(), il.end()). </para></description></method>
  2982. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: If allocator's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2983. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2984. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2985. <method name="before_begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a non-dereferenceable iterator that, when incremented, yields begin(). This iterator may be used as the argument to insert_after, erase_after, etc.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2986. <method name="before_begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a non-dereferenceable const_iterator that, when incremented, yields begin(). This iterator may be used as the argument to insert_after, erase_after, etc.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2987. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2988. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2989. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2990. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2991. <method name="cbefore_begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a non-dereferenceable const_iterator that, when incremented, yields begin(). This iterator may be used as the argument to insert_after, erase_after, etc.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2992. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2993. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2994. <method name="previous" cv="noexcept"><type>iterator</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The iterator to the element before i in the sequence. Returns the end-iterator, if either i is the begin-iterator or the sequence is empty.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements before i.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2995. <method name="previous"><type>const_iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Returns</emphasis>: The const_iterator to the element before i in the sequence. Returns the end-const_iterator, if either i is the begin-const_iterator or the sequence is empty.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements before i.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  2996. <method name="empty" cv="const"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the list contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2997. <method name="size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2998. <method name="max_size" cv="const"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  2999. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are value initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  3000. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are copy constructed from x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  3001. <method name="front"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3002. <method name="front" cv="const"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3003. <method name="emplace_front"><type>reference</type><template>
  3004. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  3005. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the front of the list</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3006. <method name="emplace_after"><type>iterator</type><template>
  3007. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  3008. </template><parameter name="prev"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... after prev</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant </para></description></method>
  3009. <method name="push_front"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the beginning of the list.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3010. <method name="push_front"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the beginning of the list and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3011. <method name="insert_after"><type>iterator</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of the value after prev_p.</para><para><emphasis role="bold">Returns</emphasis>: An iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time.</para><para><emphasis role="bold">Note</emphasis>: Does not affect the validity of iterators and references of previous values. </para></description></method>
  3012. <method name="insert_after"><type>iterator</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts a move constructed copy object from the value after the element pointed by prev_p.</para><para><emphasis role="bold">Returns</emphasis>: An iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time.</para><para><emphasis role="bold">Note</emphasis>: Does not affect the validity of iterators and references of previous values. </para></description></method>
  3013. <method name="insert_after"><type>iterator</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts n copies of x after prev_p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the last inserted element or prev_p if n is 0.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Does not affect the validity of iterators and references of previous values. </para></description></method>
  3014. <method name="insert_after"><type>iterator</type><template>
  3015. <template-type-parameter name="InpIt"/>
  3016. </template><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InpIt</paramtype></parameter><parameter name="last"><paramtype>InpIt</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts the range pointed by [first, last) after prev_p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the last inserted element or prev_p if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements inserted.</para><para><emphasis role="bold">Note</emphasis>: Does not affect the validity of iterators and references of previous values. </para></description></method>
  3017. <method name="insert_after"><type>iterator</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts the range pointed by [il.begin(), il.end()) after prev_p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the last inserted element or prev_p if il.begin() == il.end().</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements inserted.</para><para><emphasis role="bold">Note</emphasis>: Does not affect the validity of iterators and references of previous values. </para></description></method>
  3018. <method name="pop_front"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the first element from the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3019. <method name="erase_after"><type>iterator</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element after the element pointed by prev_p of the list.</para><para><emphasis role="bold">Returns</emphasis>: the first element remaining beyond the removed elements, or end() if no such element exists.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Does not invalidate iterators or references to non erased elements. </para></description></method>
  3020. <method name="erase_after"><type>iterator</type><parameter name="before_first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the range (before_first, last) from the list.</para><para><emphasis role="bold">Returns</emphasis>: the first element remaining beyond the removed elements, or end() if no such element exists.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of erased elements.</para><para><emphasis role="bold">Note</emphasis>: Does not invalidate iterators or references to non erased elements. </para></description></method>
  3021. <method name="swap" cv="noexcept(allocator_traits_type::propagate_on_container_swap::value||allocator_traits_type::is_always_equal::value))"><type>void</type><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements on *this and x. </para></description></method>
  3022. <method name="clear"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements of the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the list. </para></description></method>
  3023. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by the list. x != *this</para><para><emphasis role="bold">Effects</emphasis>: Transfers all the elements of list x to this list, after the the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: std::runtime_error if this' allocator and x's allocator are not equal.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements in x.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3024. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by the list. x != *this</para><para><emphasis role="bold">Effects</emphasis>: Transfers all the elements of list x to this list, after the the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: std::runtime_error if this' allocator and x's allocator are not equal.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements in x.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3025. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="prev"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of this. i must point to an element contained in list x. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the value pointed by i, from list x to this list, after the element pointed by prev_p. If prev_p == prev or prev_p == ++prev, this function is a null operation.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3026. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="prev"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of this. i must point to an element contained in list x. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the value pointed by i, from list x to this list, after the element pointed by prev_p. If prev_p == prev or prev_p == ++prev, this function is a null operation.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3027. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="before_first"><paramtype>const_iterator</paramtype></parameter><parameter name="before_last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of this. before_first and before_last must be valid iterators of x. prev_p must not be contained in [before_first, before_last) range. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range [before_first + 1, before_last + 1) from list x to this list, after the element pointed by prev_p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of transferred elements.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3028. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="before_first"><paramtype>const_iterator</paramtype></parameter><parameter name="before_last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of this. before_first and before_last must be valid iterators of x. prev_p must not be contained in [before_first, before_last) range. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range [before_first + 1, before_last + 1) from list x to this list, after the element pointed by prev_p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of transferred elements.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3029. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="before_first"><paramtype>const_iterator</paramtype></parameter><parameter name="before_last"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of this. before_first and before_last must be valid iterators of x. prev_p must not be contained in [before_first, before_last) range. n == distance(before_first, before_last). this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range [before_first + 1, before_last + 1) from list x to this list, after the element pointed by prev_p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3030. <method name="splice_after" cv="noexcept"><type>void</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="before_first"><paramtype>const_iterator</paramtype></parameter><parameter name="before_last"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: prev_p must be a valid iterator of this. before_first and before_last must be valid iterators of x. prev_p must not be contained in [before_first, before_last) range. n == distance(before_first, before_last). this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range [before_first + 1, before_last + 1) from list x to this list, after the element pointed by prev_p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3031. <method name="remove"><type>void</type><parameter name="value"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes all the elements that compare equal to value.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time. It performs exactly size() comparisons for equality.</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  3032. <method name="remove_if"><type>void</type><template>
  3033. <template-type-parameter name="Pred"/>
  3034. </template><parameter name="pred"><paramtype>Pred</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes all the elements for which a specified predicate is satisfied.</para><para><emphasis role="bold">Throws</emphasis>: If pred throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time. It performs exactly size() calls to the predicate.</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  3035. <method name="unique"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes adjacent duplicate elements or adjacent elements that are equal from the list.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time (size()-1 comparisons equality comparisons).</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  3036. <method name="unique"><type>void</type><template>
  3037. <template-type-parameter name="Pred"/>
  3038. </template><parameter name="pred"><paramtype>Pred</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes adjacent duplicate elements or adjacent elements that satisfy some binary predicate from the list.</para><para><emphasis role="bold">Throws</emphasis>: If pred throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear time (size()-1 comparisons calls to pred()).</para><para><emphasis role="bold">Note</emphasis>: The relative order of elements that are not removed is unchanged, and iterators to elements that are not removed remain valid. </para></description></method>
  3039. <method name="merge"><type>void</type><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this according to std::less&lt;value_type&gt;. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons. </para></description></method>
  3040. <method name="merge"><type>void</type><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this according to std::less&lt;value_type&gt;. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons. </para></description></method>
  3041. <method name="merge"><type>void</type><template>
  3042. <template-type-parameter name="StrictWeakOrdering"/>
  3043. </template><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="comp"><paramtype>StrictWeakOrdering</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a comparison function that induces a strict weak ordering and both *this and x must be sorted according to that ordering The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comp throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons.</para><para><emphasis role="bold">Note</emphasis>: Iterators and references to *this are not invalidated. </para></description></method>
  3044. <method name="merge"><type>void</type><template>
  3045. <template-type-parameter name="StrictWeakOrdering"/>
  3046. </template><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="comp"><paramtype>StrictWeakOrdering</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a comparison function that induces a strict weak ordering and both *this and x must be sorted according to that ordering The lists x and *this must be distinct.</para><para><emphasis role="bold">Effects</emphasis>: This function removes all of x's elements and inserts them in order into *this. The merge is stable; that is, if an element from *this is equivalent to one from x, then the element from *this will precede the one from x.</para><para><emphasis role="bold">Throws</emphasis>: If comp throws.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time: it performs at most size() + x.size() - 1 comparisons.</para><para><emphasis role="bold">Note</emphasis>: Iterators and references to *this are not invalidated. </para></description></method>
  3047. <method name="sort"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: This function sorts the list *this according to std::less&lt;value_type&gt;. The sort is stable, that is, the relative order of equivalent elements is preserved.</para><para><emphasis role="bold">Throws</emphasis>: If comparison throws.</para><para><emphasis role="bold">Notes</emphasis>: Iterators and references are not invalidated.</para><para><emphasis role="bold">Complexity</emphasis>: The number of comparisons is approximately N log N, where N is the list's size. </para></description></method>
  3048. <method name="sort"><type>void</type><template>
  3049. <template-type-parameter name="StrictWeakOrdering"/>
  3050. </template><parameter name="comp"><paramtype>StrictWeakOrdering</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: This function sorts the list *this according to std::less&lt;value_type&gt;. The sort is stable, that is, the relative order of equivalent elements is preserved.</para><para><emphasis role="bold">Throws</emphasis>: If comp throws.</para><para><emphasis role="bold">Notes</emphasis>: Iterators and references are not invalidated.</para><para><emphasis role="bold">Complexity</emphasis>: The number of comparisons is approximately N log N, where N is the list's size. </para></description></method>
  3051. <method name="reverse" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Reverses the order of elements in the list.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: This function is linear time.</para><para><emphasis role="bold">Note</emphasis>: Iterators and references are not invalidated </para></description></method>
  3052. <method name="emplace"><type>iterator</type><template>
  3053. <template-nontype-parameter name="Args"><type>class...</type></template-nontype-parameter>
  3054. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... before p</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements before p </para></description></method>
  3055. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of x before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or x's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements before p. </para></description></method>
  3056. <method name="insert"><type>iterator</type><parameter name="prev_p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a new element before p with x's resources.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements before p. </para></description></method>
  3057. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts n copies of x before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if n == 0.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n plus linear to the elements before p. </para></description></method>
  3058. <method name="insert"><type>iterator</type><template>
  3059. <template-type-parameter name="InIter"/>
  3060. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InIter</paramtype></parameter><parameter name="last"><paramtype>InIter</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [first, last) range before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [first, last) plus linear to the elements before p. </para></description></method>
  3061. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [il.begin(), il.end()) range before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if il.begin() == il.end().</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()) plus linear to the elements before p. </para></description></method>
  3062. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Erases the element at p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements before p. </para></description></method>
  3063. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first and last must be valid iterator to elements in *this.</para><para><emphasis role="bold">Effects</emphasis>: Erases the elements pointed by [first, last).</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the distance between first and last plus linear to the elements before first. </para></description></method>
  3064. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by the list. x != *this. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers all the elements of list x to this list, before the the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear in distance(begin(), p), and linear in x.size().</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3065. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by the list. x != *this. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers all the elements of list x to this list, before the the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear in distance(begin(), p), and linear in x.size().</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3066. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="i"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. i must point to an element contained in list x. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers the value pointed by i, from list x to this list, before the element pointed by p. No destructors or copy constructors are called. If p == i or p == ++i, this function is a null operation.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear in distance(begin(), p), and in distance(x.begin(), i).</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3067. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="i"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. i must point to an element contained in list x. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the value pointed by i, from list x to this list, before the element pointed by p. No destructors or copy constructors are called. If p == i or p == ++i, this function is a null operation.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear in distance(begin(), p), and in distance(x.begin(), i).</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3068. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. first and last must point to elements contained in list x.</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range pointed by first and last from list x to this list, before the element pointed by p. No destructors or copy constructors are called. this' allocator and x's allocator shall compare equal.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear in distance(begin(), p), in distance(x.begin(), first), and in distance(first, last).</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3069. <method name="splice" cv="noexcept"><type>void</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must point to an element contained by this list. first and last must point to elements contained in list x. this' allocator and x's allocator shall compare equal</para><para><emphasis role="bold">Effects</emphasis>: Transfers the range pointed by first and last from list x to this list, before the element pointed by p. No destructors or copy constructors are called.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear in distance(begin(), p), in distance(x.begin(), first), and in distance(first, last).</para><para><emphasis role="bold">Note</emphasis>: Iterators of values obtained from list x now point to elements of this list. Iterators of this list and all the references are not invalidated. </para></description></method>
  3070. </method-group>
  3071. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; ValueAllocator &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  3072. <constructor specifiers="explicit" cv="noexcept"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  3073. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list and inserts n value-initialized value_types.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  3074. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  3075. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const value_type &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  3076. <constructor><template>
  3077. <template-type-parameter name="InpIt"/>
  3078. </template><parameter name="first"><paramtype>InpIt</paramtype></parameter><parameter name="last"><paramtype>InpIt</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts a copy of the range [first, last) in the list.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  3079. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a list that will use a copy of allocator a and inserts a copy of the range [il.begin(), il.end()) in the list.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced std::initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></constructor>
  3080. <constructor><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a list. <emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  3081. <constructor cv="noexcept"><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  3082. <constructor><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a list using the specified allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  3083. <constructor><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor using the specified allocator. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation or value_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  3084. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys the list. All stored values are destroyed and used memory is deallocated.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements. </para></description></destructor>
  3085. <copy-assignment><type><classname>slist</classname> &amp;</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as x.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == x.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in x. </para></description></copy-assignment>
  3086. <copy-assignment cv="noexcept(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value))"><type><classname>slist</classname> &amp;</type><parameter name="x"><paramtype><classname>slist</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as x.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == x.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  3087. <copy-assignment><type><classname>slist</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as in il.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == il.size(). *this contains a copy of each of il's elements.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws) </para></description></copy-assignment>
  3088. <method-group name="friend functions">
  3089. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3090. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3091. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3092. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3093. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3094. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3095. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>slist</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3096. </method-group>
  3097. </class>
  3098. <function name="slist"><type/><template>
  3099. <template-type-parameter name="InpIt"/>
  3100. </template><parameter name=""><paramtype>InpIt</paramtype></parameter><parameter name=""><paramtype>InpIt</paramtype></parameter></function>
  3101. <function name="slist"><type/><template>
  3102. <template-type-parameter name="InpIt"/>
  3103. <template-type-parameter name="Allocator"/>
  3104. </template><parameter name=""><paramtype>InpIt</paramtype></parameter><parameter name=""><paramtype>InpIt</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  3105. </namespace>
  3106. </namespace>
  3107. <namespace name="std">
  3108. <class-specialization name="insert_iterator"><template>
  3109. <template-type-parameter name="T"/>
  3110. <template-type-parameter name="ValueAllocator"/>
  3111. </template><specialization><template-arg>boost::container::slist&lt; T</template-arg><template-arg>ValueAllocator &gt;</template-arg></specialization><description><para>A specialization of insert_iterator that works with slist </para></description><typedef name="container_type"><type><classname>Container</classname></type></typedef>
  3112. <typedef name="iterator_category"><type>output_iterator_tag</type></typedef>
  3113. <typedef name="value_type"><type>void</type></typedef>
  3114. <typedef name="difference_type"><type>void</type></typedef>
  3115. <typedef name="pointer"><type>void</type></typedef>
  3116. <typedef name="reference"><type>void</type></typedef>
  3117. <method-group name="public member functions">
  3118. <method name="operator *"><type>insert_iterator&lt; <classname>Container</classname> &gt; &amp;</type></method>
  3119. <method name="operator++"><type>insert_iterator&lt; <classname>Container</classname> &gt; &amp;</type></method>
  3120. <method name="operator++"><type>insert_iterator&lt; <classname>Container</classname> &gt; &amp;</type><parameter name=""><paramtype>int</paramtype></parameter></method>
  3121. </method-group>
  3122. <constructor><parameter name="x"><paramtype><classname>Container</classname> &amp;</paramtype></parameter><parameter name="i"><paramtype>typename Container::iterator</paramtype></parameter><parameter name="is_previous"><paramtype>bool</paramtype><default>false</default></parameter></constructor>
  3123. <copy-assignment><type>insert_iterator&lt; <classname>Container</classname> &gt; &amp;</type><parameter name="value"><paramtype>const typename Container::value_type &amp;</paramtype></parameter></copy-assignment>
  3124. </class-specialization></namespace>
  3125. </header>
  3126. <header name="boost/container/pmr/slist.hpp">
  3127. <namespace name="boost">
  3128. <namespace name="container">
  3129. <namespace name="pmr">
  3130. <struct name="slist_of"><template>
  3131. <template-type-parameter name="T"/>
  3132. </template><description><para>A portable metafunction to obtain a slist that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::slist</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  3133. </struct><typedef name="slist"><type><classname>boost::container::slist</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  3134. </namespace>
  3135. </namespace>
  3136. </namespace>
  3137. </header>
  3138. <header name="boost/container/small_vector.hpp">
  3139. <namespace name="boost">
  3140. <namespace name="container">
  3141. <class name="small_vector"><template>
  3142. <template-type-parameter name="T"><purpose><para>The type of object that is stored in the <classname alt="boost::container::small_vector">small_vector</classname> </para></purpose></template-type-parameter>
  3143. <template-nontype-parameter name="N"><type>std::size_t</type><purpose><para>The number of preallocated elements stored inside <classname alt="boost::container::small_vector">small_vector</classname>. It shall be less than Allocator::max_size(); </para></purpose></template-nontype-parameter>
  3144. <template-type-parameter name="Allocator"><default>void</default><purpose><para>The allocator used for memory management when the number of elements exceeds N. Use void for the default allocator |tparam Options A type produced from <computeroutput><classname alt="boost::container::small_vector_options">boost::container::small_vector_options</classname></computeroutput>. </para></purpose></template-type-parameter>
  3145. <template-type-parameter name="Options"><default>void</default></template-type-parameter>
  3146. </template><inherit access="public">boost::container::small_vector_base&lt; T, Allocator, Options &gt;</inherit><description><para><classname alt="boost::container::small_vector">small_vector</classname> is a vector-like container optimized for the case when it contains few elements. It contains some preallocated elements in-place, which can avoid the use of dynamic storage allocation when the actual number of elements is below that preallocated threshold.</para><para><computeroutput><classname alt="boost::container::small_vector">small_vector</classname>&lt;T, N, Allocator, Options&gt;</computeroutput> is convertible to <computeroutput><classname alt="boost::container::small_vector_base">small_vector_base</classname>&lt;T, Allocator, Options&gt;</computeroutput> that is independent from the preallocated element capacity, so client code does not need to be templated on that N argument.</para><para>All <computeroutput><classname alt="boost::container::vector">boost::container::vector</classname></computeroutput> member functions are inherited. See <computeroutput>vector</computeroutput> documentation for details.</para><para>
  3147. </para></description><method-group name="public member functions">
  3148. <method name="swap"><type>void</type><parameter name="other"><paramtype><classname>small_vector</classname> &amp;</paramtype></parameter></method>
  3149. </method-group>
  3150. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value))"/>
  3151. <constructor specifiers="explicit"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3152. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter></constructor>
  3153. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3154. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter></constructor>
  3155. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3156. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="v"><paramtype>const value_type &amp;</paramtype></parameter></constructor>
  3157. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="v"><paramtype>const value_type &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3158. <constructor><template>
  3159. <template-type-parameter name="InIt"/>
  3160. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="BOOST_CONTAINER_DOCIGN"><paramtype>InIt last </paramtype></parameter></constructor>
  3161. <constructor><template>
  3162. <template-type-parameter name="InIt"/>
  3163. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><parameter name="BOOST_CONTAINER_DOCIGN"><paramtype>const allocator_type &amp;a </paramtype></parameter></constructor>
  3164. <constructor><parameter name="other"><paramtype>const <classname>small_vector</classname> &amp;</paramtype></parameter></constructor>
  3165. <constructor><parameter name="other"><paramtype>const <classname>small_vector</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3166. <constructor specifiers="explicit"><parameter name="other"><paramtype>const <classname>base_type</classname> &amp;</paramtype></parameter></constructor>
  3167. <constructor specifiers="explicit"><parameter name="other"><paramtype><classname>base_type</classname> &amp;&amp;</paramtype></parameter></constructor>
  3168. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_assignable&lt; value_type &gt;::value))"><parameter name="other"><paramtype><classname>small_vector</classname> &amp;&amp;</paramtype></parameter></constructor>
  3169. <constructor><parameter name="other"><paramtype><classname>small_vector</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3170. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter></constructor>
  3171. <copy-assignment><type><classname>small_vector</classname> &amp;</type><parameter name="other"><paramtype>const <classname>small_vector</classname> &amp;</paramtype></parameter></copy-assignment>
  3172. <copy-assignment cv="noexcept(boost::container::dtl::is_nothrow_move_assignable&lt; value_type &gt;::value &amp;&amp;(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value)))"><type><classname>small_vector</classname> &amp;</type><parameter name="other"><paramtype><classname>small_vector</classname> &amp;&amp;</paramtype></parameter></copy-assignment>
  3173. <copy-assignment><type><classname>small_vector</classname> &amp;</type><parameter name="other"><paramtype>const <classname>base_type</classname> &amp;</paramtype></parameter></copy-assignment>
  3174. <copy-assignment><type><classname>small_vector</classname> &amp;</type><parameter name="other"><paramtype><classname>base_type</classname> &amp;&amp;</paramtype></parameter></copy-assignment>
  3175. </class><class name="small_vector_allocator"><template>
  3176. <template-type-parameter name="T"/>
  3177. <template-type-parameter name="VoidAllocator"><default>void</default></template-type-parameter>
  3178. <template-type-parameter name="Options"><default>void</default></template-type-parameter>
  3179. </template><inherit access="public">allocator_traits::template portable_rebind_alloc&lt; T &gt;::type</inherit><description><para>A non-standard allocator used to implement <computeroutput><classname alt="boost::container::small_vector">small_vector</classname></computeroutput>. Users should never use it directly. It is described here for documentation purposes.</para><para>This allocator inherits from a standard-conforming allocator and forwards member functions to the standard allocator except when internal storage is being used as memory source.</para><para>This allocator is a "partially_propagable" allocator and defines <computeroutput>is_partially_propagable</computeroutput> as true_type.</para><para>A partially propagable allocator means that not all storage allocatod by an instance of <computeroutput><classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname></computeroutput> can be deallocated by another instance of this type, even if both instances compare equal or an instance is propagated to another one using the copy/move constructor or assignment. The storage that can never be propagated is identified by <computeroutput>storage_is_unpropagable(p)</computeroutput>.</para><para><computeroutput><classname alt="boost::container::vector">boost::container::vector</classname></computeroutput> supports partially propagable allocators fallbacking to deep copy/swap/move operations when internal storage is being used to store vector elements.</para><para><computeroutput><classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname></computeroutput> assumes that will be instantiated as <computeroutput><classname alt="boost::container::vector">boost::container::vector</classname>&lt; T, <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>&lt;T, Allocator&gt; &gt;</computeroutput> and internal storage can be obtained downcasting that vector to <computeroutput><classname alt="boost::container::small_vector_base">small_vector_base</classname>&lt;T&gt;</computeroutput>. </para></description><struct name="rebind"><template>
  3180. <template-type-parameter name="T2"/>
  3181. </template><description><para>Obtains an <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname> that allocates objects of type T2 </para></description><typedef name="other"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::template portable_rebind_alloc&lt; T2 &gt;::type</type></typedef>
  3182. </struct><typedef name="value_type"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::value_type</type></typedef>
  3183. <typedef name="pointer"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  3184. <typedef name="const_pointer"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  3185. <typedef name="reference"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  3186. <typedef name="const_reference"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  3187. <typedef name="size_type"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  3188. <typedef name="difference_type"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  3189. <typedef name="void_pointer"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::void_pointer</type></typedef>
  3190. <typedef name="const_void_pointer"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::const_void_pointer</type></typedef>
  3191. <typedef name="propagate_on_container_copy_assignment"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::propagate_on_container_copy_assignment</type></typedef>
  3192. <typedef name="propagate_on_container_move_assignment"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::propagate_on_container_move_assignment</type></typedef>
  3193. <typedef name="propagate_on_container_swap"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::propagate_on_container_swap</type></typedef>
  3194. <typedef name="is_always_equal"><purpose>An integral constant with member <computeroutput>value == false</computeroutput> </purpose><type>implementation_defined</type></typedef>
  3195. <typedef name="is_partially_propagable"><purpose>An integral constant with member <computeroutput>value == true</computeroutput> </purpose><type>implementation_defined</type></typedef>
  3196. <method-group name="public member functions">
  3197. <method name="allocate"><type>pointer</type><parameter name="count"><paramtype>size_type</paramtype></parameter><parameter name="hint"><paramtype>const_void_pointer</paramtype><default>const_void_pointer()</default></parameter><purpose>Allocates storage from the standard-conforming allocator. </purpose></method>
  3198. <method name="deallocate" cv="noexcept"><type>void</type><parameter name="ptr"><paramtype>pointer</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para>Deallocates previously allocated memory. Never throws </para></description></method>
  3199. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para>Returns the maximum number of elements that could be allocated. Never throws </para></description></method>
  3200. <method name="select_on_container_copy_construction" cv="const"><type><classname>small_vector_allocator</classname></type></method>
  3201. <method name="storage_is_unpropagable" cv="const"><type>bool</type><parameter name="p"><paramtype>pointer</paramtype></parameter></method>
  3202. </method-group>
  3203. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value))"/>
  3204. <constructor cv="noexcept"><parameter name="other"><paramtype>const <classname>small_vector_allocator</classname> &amp;</paramtype></parameter><description><para>Constructor from other <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></constructor>
  3205. <constructor cv="noexcept"><parameter name="other"><paramtype><classname>small_vector_allocator</classname> &amp;&amp;</paramtype></parameter><description><para>Move constructor from <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></constructor>
  3206. <constructor cv="noexcept"><template>
  3207. <template-type-parameter name="U"/>
  3208. <template-type-parameter name="OtherVoidAllocator"/>
  3209. <template-type-parameter name="OtherOptions"/>
  3210. </template><parameter name="other"><paramtype>const <classname>small_vector_allocator</classname>&lt; U, OtherVoidAllocator, OtherOptions &gt; &amp;</paramtype></parameter><description><para>Constructor from related <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></constructor>
  3211. <constructor cv="noexcept"><template>
  3212. <template-type-parameter name="U"/>
  3213. <template-type-parameter name="OtherVoidAllocator"/>
  3214. <template-type-parameter name="OtherOptions"/>
  3215. </template><parameter name="other"><paramtype><classname>small_vector_allocator</classname>&lt; U BOOST_MOVE_I OtherVoidAllocator BOOST_MOVE_I OtherOptions &gt; &amp;&amp;</paramtype></parameter><description><para>Move constructor from related <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></constructor>
  3216. <constructor specifiers="explicit" cv="noexcept"><parameter name="other"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para>Constructor from allocator_type. Never throws </para></description></constructor>
  3217. <copy-assignment cv="noexcept"><type><classname>small_vector_allocator</classname> &amp;</type><parameter name="other"><paramtype>const <classname>small_vector_allocator</classname> &amp;</paramtype></parameter><description><para>Assignment from other <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></copy-assignment>
  3218. <copy-assignment cv="noexcept"><type><classname>small_vector_allocator</classname> &amp;</type><parameter name="other"><paramtype><classname>small_vector_allocator</classname> &amp;&amp;</paramtype></parameter><description><para>Move assignment from other <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></copy-assignment>
  3219. <copy-assignment cv="noexcept"><type><classname>small_vector_allocator</classname> &amp;</type><template>
  3220. <template-type-parameter name="U"/>
  3221. <template-type-parameter name="OtherVoidAllocator"/>
  3222. </template><parameter name="other"><paramtype>const <classname>small_vector_allocator</classname>&lt; U BOOST_MOVE_I OtherVoidAllocator BOOST_MOVE_I Options &gt; &amp;</paramtype></parameter><description><para>Assignment from related <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></copy-assignment>
  3223. <copy-assignment cv="noexcept"><type><classname>small_vector_allocator</classname> &amp;</type><template>
  3224. <template-type-parameter name="U"/>
  3225. <template-type-parameter name="OtherVoidAllocator"/>
  3226. </template><parameter name="other"><paramtype><classname>small_vector_allocator</classname>&lt; U BOOST_MOVE_I OtherVoidAllocator BOOST_MOVE_I Options &gt; &amp;&amp;</paramtype></parameter><description><para>Move assignment from related <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname>. Never throws </para></description></copy-assignment>
  3227. <copy-assignment cv="noexcept"><type><classname>small_vector_allocator</classname> &amp;</type><parameter name="other"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para>Move assignment from allocator_type. Never throws </para></description></copy-assignment>
  3228. <method-group name="friend functions">
  3229. <method name="swap" cv="noexcept"><type>friend void</type><parameter name="l"><paramtype><classname>small_vector_allocator</classname> &amp;</paramtype></parameter><parameter name="r"><paramtype><classname>small_vector_allocator</classname> &amp;</paramtype></parameter><description><para>Swaps two allocators, does nothing because this <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname> is stateless </para></description></method>
  3230. <method name="operator==" cv="noexcept"><type>friend bool</type><parameter name="l"><paramtype>const <classname>small_vector_allocator</classname> &amp;</paramtype></parameter><parameter name="r"><paramtype>const <classname>small_vector_allocator</classname> &amp;</paramtype></parameter><description><para>An <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname> always compares to true, as memory allocated with one instance can be deallocated by another instance (except for unpropagable storage) </para></description></method>
  3231. <method name="operator!=" cv="noexcept"><type>friend bool</type><parameter name="l"><paramtype>const <classname>small_vector_allocator</classname> &amp;</paramtype></parameter><parameter name="r"><paramtype>const <classname>small_vector_allocator</classname> &amp;</paramtype></parameter><description><para>An <classname alt="boost::container::small_vector_allocator">small_vector_allocator</classname> always compares to false, as memory allocated with one instance can be deallocated by another instance </para></description></method>
  3232. </method-group>
  3233. </class><class name="small_vector_base"><template>
  3234. <template-type-parameter name="T"/>
  3235. <template-type-parameter name="SecondaryAllocator"/>
  3236. <template-type-parameter name="Options"/>
  3237. </template><inherit access="public">boost::container::vector&lt; T, A, Options &gt;</inherit><description><para>This class consists of common code from all small_vector&lt;T, N&gt; types that don't depend on the "N" template parameter. This class is non-copyable and non-destructible, so this class typically used as reference argument to functions that read or write small vectors. Since <computeroutput><classname alt="boost::container::small_vector">small_vector</classname>&lt;T, N&gt;</computeroutput> derives from <computeroutput><classname alt="boost::container::small_vector_base">small_vector_base</classname>&lt;T&gt;</computeroutput>, the conversion to <computeroutput><classname alt="boost::container::small_vector_base">small_vector_base</classname></computeroutput> is implicit </para><programlisting>//Clients can pass any small_vector&lt;Foo, N&gt;.
  3238. void read_any_small_vector_of_foo(const small_vector_base&lt;Foo&gt; &amp;in_parameter);
  3239. void modify_any_small_vector_of_foo(small_vector_base&lt;Foo&gt; &amp;in_out_parameter);
  3240. void some_function()
  3241. {
  3242. small_vector&lt;Foo, 8&gt; myvector;
  3243. read_any_small_vector_of_foo(myvector); // Reads myvector
  3244. modify_any_small_vector_of_foo(myvector); // Modifies myvector
  3245. }
  3246. </programlisting><para>All <computeroutput>boost::container:vector</computeroutput> member functions are inherited. See <computeroutput>vector</computeroutput> documentation for details. </para></description><typedef name="secondary_allocator_t"><type>real_allocator&lt; T, SecondaryAllocator &gt;::type</type></typedef>
  3247. <typedef name="void_allocator_t"><type><classname>allocator_traits</classname>&lt; secondary_allocator_t &gt;::template portable_rebind_alloc&lt; void &gt;::type</type></typedef>
  3248. <typedef name="options_t"><type><classname>dtl::get_small_vector_opt</classname>&lt; Options &gt;::type</type></typedef>
  3249. <typedef name="base_type"><type><classname>dtl::vector_for_small_vector</classname>&lt; T, SecondaryAllocator, Options &gt;::type</type></typedef>
  3250. <typedef name="pointer"><type><classname>allocator_traits</classname>&lt; secondary_allocator_t &gt;::pointer</type></typedef>
  3251. <typedef name="const_pointer"><type><classname>allocator_traits</classname>&lt; secondary_allocator_t &gt;::const_pointer</type></typedef>
  3252. <typedef name="void_pointer"><type><classname>allocator_traits</classname>&lt; secondary_allocator_t &gt;::void_pointer</type></typedef>
  3253. <typedef name="const_void_pointer"><type><classname>allocator_traits</classname>&lt; secondary_allocator_t &gt;::const_void_pointer</type></typedef>
  3254. <typedef name="allocator_type"><type><classname>small_vector_allocator</classname>&lt; T, void_allocator_t, Options &gt;</type></typedef>
  3255. <typedef name="storage_type"><type>dtl::aligned_storage&lt; sizeof(T), final_alignment &gt;::type</type></typedef>
  3256. <method-group name="private member functions">
  3257. <method name="internal_storage" cv="const noexcept"><type>const_pointer</type></method>
  3258. <method name="internal_storage" cv="noexcept"><type>pointer</type></method>
  3259. <method name="as_base"><type><classname>base_type</classname> &amp;</type></method>
  3260. <method name="as_base" cv="const"><type>const <classname>base_type</classname> &amp;</type></method>
  3261. </method-group>
  3262. <method-group name="protected member functions">
  3263. </method-group>
  3264. <constructor specifiers="explicit"><parameter name=""><paramtype>initial_capacity_t</paramtype></parameter><parameter name="initial_capacity"><paramtype>std::size_t</paramtype></parameter></constructor>
  3265. <constructor specifiers="explicit"><template>
  3266. <template-type-parameter name="AllocFwd"/>
  3267. </template><parameter name=""><paramtype>initial_capacity_t</paramtype></parameter><parameter name="capacity"><paramtype>std::size_t</paramtype></parameter><parameter name="a"><paramtype>AllocFwd &amp;&amp;</paramtype></parameter></constructor>
  3268. <method-group name="public member functions">
  3269. <method name="swap"><type>void</type><parameter name="other"><paramtype><classname>small_vector_base</classname> &amp;</paramtype></parameter></method>
  3270. </method-group>
  3271. <copy-assignment><type><classname>small_vector_base</classname> &amp;</type><parameter name="other"><paramtype>const <classname>small_vector_base</classname> &amp;</paramtype></parameter></copy-assignment>
  3272. <copy-assignment><type><classname>small_vector_base</classname> &amp;</type><parameter name="other"><paramtype><classname>small_vector_base</classname> &amp;&amp;</paramtype></parameter></copy-assignment>
  3273. </class><namespace name="dtl">
  3274. <struct name="get_small_vector_opt"><template>
  3275. <template-type-parameter name="Options"/>
  3276. </template><typedef name="type"><type>Options</type></typedef>
  3277. </struct><struct-specialization name="get_small_vector_opt"><template>
  3278. </template><specialization><template-arg>void</template-arg></specialization><typedef name="type"><type>small_vector_null_opt</type></typedef>
  3279. </struct-specialization><struct name="get_vopt_from_svopt"><template>
  3280. <template-type-parameter name="Options"/>
  3281. </template><inherit access="public">get_small_vector_opt::type&lt; Options &gt;</inherit><typedef name="options_t"><type><classname>get_small_vector_opt</classname>&lt; Options &gt;::type</type></typedef>
  3282. <typedef name="type"><type>vector_opt&lt; typename options_t::growth_factor_type, void &gt;</type></typedef>
  3283. </struct><struct-specialization name="get_vopt_from_svopt"><template>
  3284. </template><specialization><template-arg>void</template-arg></specialization><typedef name="type"><type>void</type></typedef>
  3285. </struct-specialization><struct name="vector_for_small_vector"><template>
  3286. <template-type-parameter name="T"/>
  3287. <template-type-parameter name="SecondaryAllocator"/>
  3288. <template-type-parameter name="Options"/>
  3289. </template><typedef name="type"><type><classname>vector</classname>&lt; T, <classname>small_vector_allocator</classname>&lt; T, typename <classname>allocator_traits</classname>&lt; typename real_allocator&lt; T, SecondaryAllocator &gt;::<classname>type</classname> &gt;::template portable_rebind_alloc&lt; void &gt;::<classname>type</classname>, Options &gt;, typename <classname>dtl::get_vopt_from_svopt</classname>&lt; Options &gt;::<classname>type</classname> &gt;</type></typedef>
  3290. </struct></namespace>
  3291. </namespace>
  3292. </namespace>
  3293. </header>
  3294. <header name="boost/container/pmr/small_vector.hpp">
  3295. <namespace name="boost">
  3296. <namespace name="container">
  3297. <namespace name="pmr">
  3298. <struct name="small_vector_of"><template>
  3299. <template-type-parameter name="T"/>
  3300. <template-nontype-parameter name="N"><type>std::size_t</type></template-nontype-parameter>
  3301. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::small_vector">small_vector</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::small_vector</classname>&lt; T, N, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  3302. </struct><typedef name="small_vector"><type><classname>boost::container::small_vector</classname>&lt; T, N, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  3303. </namespace>
  3304. </namespace>
  3305. </namespace>
  3306. </header>
  3307. <header name="boost/container/stable_vector.hpp">
  3308. <namespace name="boost">
  3309. <namespace name="container">
  3310. <class name="stable_vector"><template>
  3311. <template-type-parameter name="T"><purpose><para>The type of object that is stored in the <classname alt="boost::container::stable_vector">stable_vector</classname> </para></purpose></template-type-parameter>
  3312. <template-type-parameter name="Allocator"><default>void</default><purpose><para>The allocator used for all internal memory management </para></purpose></template-type-parameter>
  3313. </template><description><para>Originally developed by Joaquin M. Lopez Munoz, <classname alt="boost::container::stable_vector">stable_vector</classname> is a std::vector drop-in replacement implemented as a node container, offering iterator and reference stability.</para><para>Here are the details taken from the author's blog (<ulink url="http://bannalia.blogspot.com/2008/09/introducing-stablevector.html">Introducing stable_vector</ulink>):</para><para>We present <classname alt="boost::container::stable_vector">stable_vector</classname>, a fully STL-compliant stable container that provides most of the features of std::vector except element contiguity.</para><para>General properties: <classname alt="boost::container::stable_vector">stable_vector</classname> satisfies all the requirements of a container, a reversible container and a sequence and provides all the optional operations present in std::vector. Like std::vector, iterators are random access. <classname alt="boost::container::stable_vector">stable_vector</classname> does not provide element contiguity; in exchange for this absence, the container is stable, i.e. references and iterators to an element of a <classname alt="boost::container::stable_vector">stable_vector</classname> remain valid as long as the element is not erased, and an iterator that has been assigned the return value of end() always remain valid until the destruction of the associated <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para>Operation complexity: The big-O complexities of <classname alt="boost::container::stable_vector">stable_vector</classname> operations match exactly those of std::vector. In general, insertion/deletion is constant time at the end of the sequence and linear elsewhere. Unlike std::vector, <classname alt="boost::container::stable_vector">stable_vector</classname> does not internally perform any value_type destruction, copy or assignment operations other than those exactly corresponding to the insertion of new elements or deletion of stored elements, which can sometimes compensate in terms of performance for the extra burden of doing more pointer manipulation and an additional allocation per element.</para><para>Exception safety: As <classname alt="boost::container::stable_vector">stable_vector</classname> does not internally copy elements around, some operations provide stronger exception safety guarantees than in std::vector.</para><para>
  3314. </para></description><typedef name="value_type"><type>T</type></typedef>
  3315. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::pointer</type></typedef>
  3316. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::const_pointer</type></typedef>
  3317. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::reference</type></typedef>
  3318. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::const_reference</type></typedef>
  3319. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::size_type</type></typedef>
  3320. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; ValueAllocator &gt;::difference_type</type></typedef>
  3321. <typedef name="allocator_type"><type>ValueAllocator</type></typedef>
  3322. <typedef name="stored_allocator_type"><type>node_allocator_type</type></typedef>
  3323. <typedef name="iterator"><type>implementation_defined</type></typedef>
  3324. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  3325. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  3326. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  3327. <method-group name="public member functions">
  3328. <method name="assign"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="t"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the n copies of val to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  3329. <method name="assign"><type>void</type><template>
  3330. <template-type-parameter name="InputIterator"/>
  3331. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [first, last) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  3332. <method name="assign"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [il.begin(), il.end()) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing initializer_list iterator throws. </para></description></method>
  3333. <method name="get_allocator" cv="const"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: If allocator's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3334. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  3335. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  3336. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3337. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3338. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3339. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3340. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3341. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3342. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3343. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3344. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3345. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3346. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3347. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3348. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the <classname alt="boost::container::stable_vector">stable_vector</classname> contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3349. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3350. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3351. <method name="resize"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are value initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's value initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  3352. <method name="resize"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are default initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's default initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  3353. <method name="resize"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="t"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are copy constructed from x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  3354. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3355. <method name="reserve"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws. </para></description></method>
  3356. <method name="shrink_to_fit"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created with previous allocations. The size of the <classname alt="boost::container::stable_vector">stable_vector</classname> is unchanged</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  3357. <method name="front" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3358. <method name="front" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3359. <method name="back" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3360. <method name="back" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3361. <method name="operator[]" cv="noexcept"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3362. <method name="operator[]" cv="const noexcept"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3363. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  3364. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  3365. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  3366. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  3367. <method name="at"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3368. <method name="at" cv="const"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3369. <method name="emplace_back"><type>reference</type><template>
  3370. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  3371. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the end of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3372. <method name="emplace"><type>iterator</type><template>
  3373. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  3374. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... before p</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: If p is end(), amortized constant time Linear time otherwise. </para></description></method>
  3375. <method name="push_back"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the end of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3376. <method name="push_back"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the end of the <classname alt="boost::container::stable_vector">stable_vector</classname> and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  3377. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of x before p.</para><para><emphasis role="bold">Returns</emphasis>: An iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or x's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: If p is end(), amortized constant time Linear time otherwise. </para></description></method>
  3378. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a new element before p with x's resources.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the inserted element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: If p is end(), amortized constant time Linear time otherwise. </para></description></method>
  3379. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="t"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert n copies of x before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if n is 0.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  3380. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><purpose><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this. </purpose><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [il.begin(), il.end()) range before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if first == last.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [il.begin(), il.end()). </para></description></method>
  3381. <method name="insert"><type>iterator</type><template>
  3382. <template-type-parameter name="InputIterator"/>
  3383. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [first, last) range before p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InpIt throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to distance [first, last). </para></description></method>
  3384. <method name="pop_back" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the last element from the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant time. </para></description></method>
  3385. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element at p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements between p and the last element. Constant if p is the last element. </para></description></method>
  3386. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the elements pointed by [first, last).</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the distance between first and last plus linear to the elements between p and the last element. </para></description></method>
  3387. <method name="swap" cv="noexcept(allocator_traits_type::propagate_on_container_swap::value||allocator_traits_type::is_always_equal::value))"><type>void</type><parameter name="x"><paramtype><classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3388. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements of the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the <classname alt="boost::container::stable_vector">stable_vector</classname>. </para></description></method>
  3389. </method-group>
  3390. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; ValueAllocator &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs a <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  3391. <constructor specifiers="explicit" cv="noexcept"><parameter name="al"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  3392. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> and inserts n value initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  3393. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> and inserts n default initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></constructor>
  3394. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> that will use a copy of allocator a and inserts n value initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  3395. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> that will use a copy of allocator a and inserts n default initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></constructor>
  3396. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="t"><paramtype>const T &amp;</paramtype></parameter><parameter name="al"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's default or copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  3397. <constructor><template>
  3398. <template-type-parameter name="InputIterator"/>
  3399. </template><parameter name="first"><paramtype>InputIterator</paramtype></parameter><parameter name="last"><paramtype>InputIterator</paramtype></parameter><parameter name="al"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> that will use a copy of allocator a and inserts a copy of the range [first, last) in the <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  3400. <constructor><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::stable_vector">stable_vector</classname>.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  3401. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="l"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> that will use a copy of allocator a and inserts a copy of the range [il.begin(), il.last()) in the <classname alt="boost::container::stable_vector">stable_vector</classname></para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws or T's constructor taking a dereferenced initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></constructor>
  3402. <constructor cv="noexcept"><parameter name="x"><paramtype><classname>stable_vector</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  3403. <constructor><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::stable_vector">stable_vector</classname> using the specified allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  3404. <constructor><parameter name="x"><paramtype><classname>stable_vector</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor using the specified allocator. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise </para></description></constructor>
  3405. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys the <classname alt="boost::container::stable_vector">stable_vector</classname>. All stored values are destroyed and used memory is deallocated.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements. </para></description></destructor>
  3406. <copy-assignment><type><classname>stable_vector</classname> &amp;</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as x.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == x.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in x. </para></description></copy-assignment>
  3407. <copy-assignment cv="noexcept(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value))"><type><classname>stable_vector</classname> &amp;</type><parameter name="x"><paramtype><classname>stable_vector</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move assignment. All x's values are transferred to *this.</para><para><emphasis role="bold">Postcondition</emphasis>: x.empty(). *this contains a the elements x had before the function.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or T's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  3408. <copy-assignment><type><classname>stable_vector</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Make *this container contains elements from il.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></copy-assignment>
  3409. <method-group name="friend functions">
  3410. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3411. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3412. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3413. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3414. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3415. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  3416. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>stable_vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>stable_vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  3417. </method-group>
  3418. </class>
  3419. <function name="stable_vector"><type/><template>
  3420. <template-type-parameter name="InputIterator"/>
  3421. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  3422. <function name="stable_vector"><type/><template>
  3423. <template-type-parameter name="InputIterator"/>
  3424. <template-type-parameter name="Allocator"/>
  3425. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  3426. </namespace>
  3427. </namespace>
  3428. </header>
  3429. <header name="boost/container/pmr/stable_vector.hpp">
  3430. <namespace name="boost">
  3431. <namespace name="container">
  3432. <namespace name="pmr">
  3433. <struct name="stable_vector_of"><template>
  3434. <template-type-parameter name="T"/>
  3435. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::stable_vector">stable_vector</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::stable_vector</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  3436. </struct><typedef name="stable_vector"><type><classname>boost::container::stable_vector</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  3437. </namespace>
  3438. </namespace>
  3439. </namespace>
  3440. </header>
  3441. <header name="boost/container/static_vector.hpp">
  3442. <namespace name="boost">
  3443. <namespace name="container">
  3444. <class name="static_vector"><template>
  3445. <template-type-parameter name="T"><purpose><para>The type of element that will be stored. </para></purpose></template-type-parameter>
  3446. <template-nontype-parameter name="Capacity"><type>std::size_t</type><purpose><para>The maximum number of elements <classname alt="boost::container::static_vector">static_vector</classname> can store, fixed at compile time. </para></purpose></template-nontype-parameter>
  3447. <template-type-parameter name="Options"><default>void</default><purpose><para>A type produced from <computeroutput><classname alt="boost::container::static_vector_options">boost::container::static_vector_options</classname></computeroutput>. </para></purpose></template-type-parameter>
  3448. </template><inherit access="public">boost::container::vector&lt; T, dtl::get_static_vector_allocator&lt; T, Capacity, Options &gt;::type &gt;</inherit><purpose>A variable-size array container with fixed capacity. </purpose><description><para><classname alt="boost::container::static_vector">static_vector</classname> is a sequence container like <classname alt="boost::container::vector">boost::container::vector</classname> with contiguous storage that can change in size, along with the static allocation, low overhead, and fixed capacity of boost::array.</para><para>A <classname alt="boost::container::static_vector">static_vector</classname> is a sequence that supports random access to elements, constant time insertion and removal of elements at the end, and linear time insertion and removal of elements at the beginning or in the middle. The number of elements in a <classname alt="boost::container::static_vector">static_vector</classname> may vary dynamically up to a fixed capacity because elements are stored within the object itself similarly to an array. However, objects are initialized as they are inserted into <classname alt="boost::container::static_vector">static_vector</classname> unlike C arrays or std::array which must construct all elements on instantiation. The behavior of <classname alt="boost::container::static_vector">static_vector</classname> enables the use of statically allocated elements in cases with complex object lifetime requirements that would otherwise not be trivially possible.</para><para><formalpara><title>Error Handling</title><para>Insertion beyond the capacity result in throwing std::bad_alloc() if exceptions are enabled or calling throw_bad_alloc() if not enabled.</para>
  3449. </formalpara>
  3450. std::out_of_range is thrown if out of bounds access is performed in <computeroutput>at()</computeroutput> if exceptions are enabled, throw_out_of_range() if not enabled.</para><para>
  3451. </para></description><typedef name="value_type"><purpose>The type of elements stored in the container. </purpose><type>base_t::value_type</type></typedef>
  3452. <typedef name="size_type"><purpose>The unsigned integral type used by the container. </purpose><type>base_t::size_type</type></typedef>
  3453. <typedef name="difference_type"><purpose>The pointers difference type. </purpose><type>base_t::difference_type</type></typedef>
  3454. <typedef name="pointer"><purpose>The pointer type. </purpose><type>base_t::pointer</type></typedef>
  3455. <typedef name="const_pointer"><purpose>The const pointer type. </purpose><type>base_t::const_pointer</type></typedef>
  3456. <typedef name="reference"><purpose>The value reference type. </purpose><type>base_t::reference</type></typedef>
  3457. <typedef name="const_reference"><purpose>The value const reference type. </purpose><type>base_t::const_reference</type></typedef>
  3458. <typedef name="iterator"><purpose>The iterator type. </purpose><type>base_t::iterator</type></typedef>
  3459. <typedef name="const_iterator"><purpose>The const iterator type. </purpose><type>base_t::const_iterator</type></typedef>
  3460. <typedef name="reverse_iterator"><purpose>The reverse iterator type. </purpose><type>base_t::reverse_iterator</type></typedef>
  3461. <typedef name="const_reverse_iterator"><purpose>The const reverse iterator. </purpose><type>base_t::const_reverse_iterator</type></typedef>
  3462. <data-member name="static_capacity" specifiers="static"><type>const size_type</type><purpose>The capacity/max size of the container. </purpose></data-member>
  3463. <method-group name="public member functions">
  3464. <method name="swap"><type>void</type><parameter name="other"><paramtype><classname>static_vector</classname> &amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be swapped with this one's content.</para></description></parameter><purpose>Swaps contents of the other <classname alt="boost::container::static_vector">static_vector</classname> and this one. </purpose><description><para>
  3465. <formalpara><title>Throws</title><para><itemizedlist>
  3466. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput> and T's move constructor or move assignment throws, </para>
  3467. </listitem>
  3468. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput> and T's copy constructor or copy assignment throws,</para>
  3469. </listitem>
  3470. </itemizedlist>
  3471. </para>
  3472. </formalpara>
  3473. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3474. </formalpara>
  3475. </para></description></method>
  3476. <method name="swap"><type>void</type><template>
  3477. <template-nontype-parameter name="C"><type>std::size_t</type></template-nontype-parameter>
  3478. <template-type-parameter name="O"/>
  3479. </template><parameter name="other"><paramtype><classname>static_vector</classname>&lt; T, C, O &gt; &amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be swapped with this one's content.</para></description></parameter><purpose>Swaps contents of the other <classname alt="boost::container::static_vector">static_vector</classname> and this one. </purpose><description><para>
  3480. <formalpara><title>Throws</title><para><itemizedlist>
  3481. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput> and T's move constructor or move assignment throws, </para>
  3482. </listitem>
  3483. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput> and T's copy constructor or copy assignment throws,</para>
  3484. </listitem>
  3485. </itemizedlist>
  3486. </para>
  3487. </formalpara>
  3488. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3489. </formalpara>
  3490. </para></description><requires><para><computeroutput>other.size() &lt;= capacity() &amp;&amp; size() &lt;= other.capacity()</computeroutput></para>
  3491. </requires></method>
  3492. <method name="resize"><type>void</type><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of elements which will be stored in the container.</para></description></parameter><purpose>Inserts or erases elements at the end such that the size becomes count. New elements are value initialized. </purpose><description><para>
  3493. <formalpara><title>Throws</title><para>If T's value initialization throws.</para>
  3494. </formalpara>
  3495. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3496. </formalpara>
  3497. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3498. </requires></method>
  3499. <method name="resize"><type>void</type><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of elements which will be stored in the container.</para></description></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><purpose>Inserts or erases elements at the end such that the size becomes count. New elements are default initialized. </purpose><description><para>
  3500. <formalpara><title>Throws</title><para>If T's default initialization throws.</para>
  3501. </formalpara>
  3502. <formalpara><title>Complexity</title><para>Linear O(N).</para>
  3503. </formalpara>
  3504. <formalpara><title>Note</title><para>Non-standard extension </para>
  3505. </formalpara>
  3506. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3507. </requires></method>
  3508. <method name="resize"><type>void</type><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of elements which will be stored in the container. </para></description></parameter><parameter name="value"><paramtype>value_type const &amp;</paramtype><description><para>The value used to copy construct the new element.</para></description></parameter><purpose>Inserts or erases elements at the end such that the size becomes count. New elements are copy constructed from value. </purpose><description><para>
  3509. <formalpara><title>Throws</title><para>If T's copy constructor throws.</para>
  3510. </formalpara>
  3511. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3512. </formalpara>
  3513. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3514. </requires></method>
  3515. <method name="reserve" cv="noexcept"><type>void</type><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of elements which the container should be able to contain.</para></description></parameter><purpose>This call has no effect because the Capacity of this container is constant. </purpose><description><para>
  3516. <formalpara><title>Throws</title><para>Nothing.</para>
  3517. </formalpara>
  3518. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3519. </formalpara>
  3520. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3521. </requires></method>
  3522. <method name="push_back"><type>void</type><parameter name="value"><paramtype>value_type const &amp;</paramtype><description><para>The value used to copy construct the new element.</para></description></parameter><purpose>Adds a copy of value at the end. </purpose><description><para>
  3523. <formalpara><title>Throws</title><para>If T's copy constructor throws.</para>
  3524. </formalpara>
  3525. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3526. </formalpara>
  3527. </para></description><requires><para><computeroutput>size() &lt; capacity()</computeroutput></para>
  3528. </requires></method>
  3529. <method name="push_back"><type>void</type><parameter name="value"><paramtype>value_type &amp;&amp;</paramtype><description><para>The value to move construct the new element.</para></description></parameter><purpose>Moves value to the end. </purpose><description><para>
  3530. <formalpara><title>Throws</title><para>If T's move constructor throws.</para>
  3531. </formalpara>
  3532. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3533. </formalpara>
  3534. </para></description><requires><para><computeroutput>size() &lt; capacity()</computeroutput></para>
  3535. </requires></method>
  3536. <method name="pop_back"><type>void</type><purpose>Destroys last value and decreases the size. </purpose><description><para>
  3537. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3538. </formalpara>
  3539. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3540. </formalpara>
  3541. </para></description><requires><para><computeroutput>!empty()</computeroutput></para>
  3542. </requires></method>
  3543. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position at which the new value will be inserted. </para></description></parameter><parameter name="value"><paramtype>value_type const &amp;</paramtype><description><para>The value used to copy construct the new element.</para></description></parameter><purpose>Inserts a copy of element at p. </purpose><description><para>
  3544. <formalpara><title>Throws</title><para><itemizedlist>
  3545. <listitem><para>If T's copy constructor or copy assignment throws </para>
  3546. </listitem>
  3547. <listitem><para>If T's move constructor or move assignment throws.</para>
  3548. </listitem>
  3549. </itemizedlist>
  3550. </para>
  3551. </formalpara>
  3552. <formalpara><title>Complexity</title><para>Constant or linear. </para>
  3553. </formalpara>
  3554. </para></description><requires><para><itemizedlist>
  3555. <listitem><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end()]</computeroutput>. </para>
  3556. </listitem>
  3557. <listitem><para><computeroutput>size() &lt; capacity()</computeroutput></para>
  3558. </listitem>
  3559. </itemizedlist>
  3560. </para>
  3561. </requires></method>
  3562. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position at which the new value will be inserted. </para></description></parameter><parameter name="value"><paramtype>value_type &amp;&amp;</paramtype><description><para>The value used to move construct the new element.</para></description></parameter><purpose>Inserts a move-constructed element at p. </purpose><description><para>
  3563. <formalpara><title>Throws</title><para>If T's move constructor or move assignment throws.</para>
  3564. </formalpara>
  3565. <formalpara><title>Complexity</title><para>Constant or linear. </para>
  3566. </formalpara>
  3567. </para></description><requires><para><itemizedlist>
  3568. <listitem><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end()]</computeroutput>. </para>
  3569. </listitem>
  3570. <listitem><para><computeroutput>size() &lt; capacity()</computeroutput></para>
  3571. </listitem>
  3572. </itemizedlist>
  3573. </para>
  3574. </requires></method>
  3575. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position at which new elements will be inserted. </para></description></parameter><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of new elements which will be inserted. </para></description></parameter><parameter name="value"><paramtype>value_type const &amp;</paramtype><description><para>The value used to copy construct new elements.</para></description></parameter><purpose>Inserts a count copies of value at p. </purpose><description><para>
  3576. <formalpara><title>Throws</title><para><itemizedlist>
  3577. <listitem><para>If T's copy constructor or copy assignment throws. </para>
  3578. </listitem>
  3579. <listitem><para>If T's move constructor or move assignment throws.</para>
  3580. </listitem>
  3581. </itemizedlist>
  3582. </para>
  3583. </formalpara>
  3584. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3585. </formalpara>
  3586. </para></description><requires><para><itemizedlist>
  3587. <listitem><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end()]</computeroutput>. </para>
  3588. </listitem>
  3589. <listitem><para><computeroutput>size() + count &lt;= capacity()</computeroutput></para>
  3590. </listitem>
  3591. </itemizedlist>
  3592. </para>
  3593. </requires></method>
  3594. <method name="insert"><type>iterator</type><template>
  3595. <template-type-parameter name="Iterator"/>
  3596. </template><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position at which new elements will be inserted. </para></description></parameter><parameter name="first"><paramtype>Iterator</paramtype><description><para>The iterator to the first element of a range used to construct new elements. </para></description></parameter><parameter name="last"><paramtype>Iterator</paramtype><description><para>The iterator to the one after the last element of a range used to construct new elements.</para></description></parameter><purpose>Inserts a copy of a range <computeroutput>[first, last)</computeroutput> at p. </purpose><description><para>
  3597. <formalpara><title>Throws</title><para><itemizedlist>
  3598. <listitem><para>If T's constructor and assignment taking a dereferenced <computeroutput>Iterator</computeroutput>. </para>
  3599. </listitem>
  3600. <listitem><para>If T's move constructor or move assignment throws.</para>
  3601. </listitem>
  3602. </itemizedlist>
  3603. </para>
  3604. </formalpara>
  3605. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3606. </formalpara>
  3607. </para></description><requires><para><itemizedlist>
  3608. <listitem><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end()]</computeroutput>. </para>
  3609. </listitem>
  3610. <listitem><para><computeroutput>distance(first, last) &lt;= capacity()</computeroutput> </para>
  3611. </listitem>
  3612. <listitem><para><computeroutput>Iterator</computeroutput> must meet the <computeroutput>ForwardTraversalIterator</computeroutput> concept.</para>
  3613. </listitem>
  3614. </itemizedlist>
  3615. </para>
  3616. </requires></method>
  3617. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position at which new elements will be inserted. </para></description></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype><description><para>The std::initializer_list which contains elements that will be inserted.</para></description></parameter><purpose>Inserts a copy of a range <computeroutput>[il.begin(), il.end())</computeroutput> at p. </purpose><description><para>
  3618. <formalpara><title>Throws</title><para><itemizedlist>
  3619. <listitem><para>If T's constructor and assignment taking a dereferenced std::initializer_list iterator.</para>
  3620. </listitem>
  3621. </itemizedlist>
  3622. </para>
  3623. </formalpara>
  3624. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3625. </formalpara>
  3626. </para></description><requires><para><itemizedlist>
  3627. <listitem><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end()]</computeroutput>. </para>
  3628. </listitem>
  3629. <listitem><para><computeroutput>distance(il.begin(), il.end()) &lt;= capacity()</computeroutput></para>
  3630. </listitem>
  3631. </itemizedlist>
  3632. </para>
  3633. </requires></method>
  3634. <method name="erase"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position of the element which will be erased from the container.</para></description></parameter><purpose>Erases T from p. </purpose><description><para>
  3635. <formalpara><title>Throws</title><para>If T's move assignment throws.</para>
  3636. </formalpara>
  3637. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3638. </formalpara>
  3639. </para></description><requires><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end())</computeroutput></para>
  3640. </requires></method>
  3641. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype><description><para>The position of the first element of a range which will be erased from the container. </para></description></parameter><parameter name="last"><paramtype>const_iterator</paramtype><description><para>The position of the one after the last element of a range which will be erased from the container.</para></description></parameter><purpose>Erases Values from a range <computeroutput>[first, last)</computeroutput>. </purpose><description><para>
  3642. <formalpara><title>Throws</title><para>If T's move assignment throws.</para>
  3643. </formalpara>
  3644. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3645. </formalpara>
  3646. </para></description><requires><para><itemizedlist>
  3647. <listitem><para><computeroutput>first</computeroutput> and <computeroutput>last</computeroutput> must define a valid range </para>
  3648. </listitem>
  3649. <listitem><para>iterators must be in range <computeroutput>[begin(), end()]</computeroutput></para>
  3650. </listitem>
  3651. </itemizedlist>
  3652. </para>
  3653. </requires></method>
  3654. <method name="assign"><type>void</type><template>
  3655. <template-type-parameter name="Iterator"/>
  3656. </template><parameter name="first"><paramtype>Iterator</paramtype><description><para>The iterator to the first element of a range used to construct new content of this container. </para></description></parameter><parameter name="last"><paramtype>Iterator</paramtype><description><para>The iterator to the one after the last element of a range used to construct new content of this container.</para></description></parameter><purpose>Assigns a range <computeroutput>[first, last)</computeroutput> of Values to this container. </purpose><description><para>
  3657. <formalpara><title>Throws</title><para>If T's copy constructor or copy assignment throws,</para>
  3658. </formalpara>
  3659. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3660. </formalpara>
  3661. </para></description><requires><para><computeroutput>distance(first, last) &lt;= capacity()</computeroutput></para>
  3662. </requires></method>
  3663. <method name="assign"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype><description><para>std::initializer_list with values used to construct new content of this container.</para></description></parameter><purpose>Assigns a range <computeroutput>[il.begin(), il.end())</computeroutput> of Values to this container. </purpose><description><para>
  3664. <formalpara><title>Throws</title><para>If T's copy constructor or copy assignment throws,</para>
  3665. </formalpara>
  3666. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3667. </formalpara>
  3668. </para></description><requires><para><computeroutput>distance(il.begin(), il.end()) &lt;= capacity()</computeroutput></para>
  3669. </requires></method>
  3670. <method name="assign"><type>void</type><parameter name="count"><paramtype>size_type</paramtype><description><para>The new number of elements which will be container in the container. </para></description></parameter><parameter name="value"><paramtype>value_type const &amp;</paramtype><description><para>The value which will be used to copy construct the new content.</para></description></parameter><purpose>Assigns a count copies of value to this container. </purpose><description><para>
  3671. <formalpara><title>Throws</title><para>If T's copy constructor or copy assignment throws.</para>
  3672. </formalpara>
  3673. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3674. </formalpara>
  3675. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3676. </requires></method>
  3677. <method name="emplace_back"><type>reference</type><template>
  3678. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  3679. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype><description><para>The arguments of the constructor of the new element which will be created at the end of the container.</para></description></parameter><purpose>Inserts a T constructed with <computeroutput>std::forward&lt;Args&gt;(args)</computeroutput>... in the end of the container. </purpose><description><para>
  3680. <formalpara><title>Throws</title><para>If in-place constructor throws or T's move constructor throws.</para>
  3681. </formalpara>
  3682. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3683. </formalpara>
  3684. </para></description><requires><para><computeroutput>size() &lt; capacity()</computeroutput></para>
  3685. </requires><returns><para>A reference to the created object.</para>
  3686. </returns></method>
  3687. <method name="emplace"><type>iterator</type><template>
  3688. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  3689. </template><parameter name="p"><paramtype>const_iterator</paramtype><description><para>The position at which new elements will be inserted. </para></description></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype><description><para>The arguments of the constructor of the new element.</para></description></parameter><purpose>Inserts a T constructed with <computeroutput>std::forward&lt;Args&gt;(args)</computeroutput>... before p. </purpose><description><para>
  3690. <formalpara><title>Throws</title><para>If in-place constructor throws or if T's move constructor or move assignment throws.</para>
  3691. </formalpara>
  3692. <formalpara><title>Complexity</title><para>Constant or linear. </para>
  3693. </formalpara>
  3694. </para></description><requires><para><itemizedlist>
  3695. <listitem><para><computeroutput>p</computeroutput> must be a valid iterator of <computeroutput>*this</computeroutput> in range <computeroutput>[begin(), end()]</computeroutput> </para>
  3696. </listitem>
  3697. <listitem><para><computeroutput>size() &lt; capacity()</computeroutput></para>
  3698. </listitem>
  3699. </itemizedlist>
  3700. </para>
  3701. </requires></method>
  3702. <method name="clear" cv="noexcept"><type>void</type><purpose>Removes all elements from the container. </purpose><description><para><formalpara><title>Throws</title><para>Nothing.</para>
  3703. </formalpara>
  3704. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3705. </formalpara>
  3706. </para></description></method>
  3707. <method name="at"><type>reference</type><parameter name="i"><paramtype>size_type</paramtype><description><para>The element's index.</para></description></parameter><purpose>Returns reference to the i-th element. </purpose><description><para>
  3708. <formalpara><title>Throws</title><para><computeroutput>std::out_of_range</computeroutput> exception by default.</para>
  3709. </formalpara>
  3710. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3711. </formalpara>
  3712. </para></description><requires><para><computeroutput>i &lt; size()</computeroutput></para>
  3713. </requires><returns><para>reference to the i-th element from the beginning of the container.</para>
  3714. </returns></method>
  3715. <method name="at" cv="const"><type>const_reference</type><parameter name="i"><paramtype>size_type</paramtype><description><para>The element's index.</para></description></parameter><purpose>Returns const reference to the i-th element. </purpose><description><para>
  3716. <formalpara><title>Throws</title><para><computeroutput>std::out_of_range</computeroutput> exception by default.</para>
  3717. </formalpara>
  3718. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3719. </formalpara>
  3720. </para></description><requires><para><computeroutput>i &lt; size()</computeroutput></para>
  3721. </requires><returns><para>const reference to the i-th element from the beginning of the container.</para>
  3722. </returns></method>
  3723. <method name="operator[]"><type>reference</type><parameter name="i"><paramtype>size_type</paramtype><description><para>The element's index.</para></description></parameter><purpose>Returns reference to the i-th element. </purpose><description><para>
  3724. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3725. </formalpara>
  3726. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3727. </formalpara>
  3728. </para></description><requires><para><computeroutput>i &lt; size()</computeroutput></para>
  3729. </requires><returns><para>reference to the i-th element from the beginning of the container.</para>
  3730. </returns></method>
  3731. <method name="operator[]" cv="const"><type>const_reference</type><parameter name="i"><paramtype>size_type</paramtype><description><para>The element's index.</para></description></parameter><purpose>Returns const reference to the i-th element. </purpose><description><para>
  3732. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3733. </formalpara>
  3734. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3735. </formalpara>
  3736. </para></description><requires><para><computeroutput>i &lt; size()</computeroutput></para>
  3737. </requires><returns><para>const reference to the i-th element from the beginning of the container.</para>
  3738. </returns></method>
  3739. <method name="nth"><type>iterator</type><parameter name="i"><paramtype>size_type</paramtype><description><para>The element's index.</para></description></parameter><purpose>Returns a iterator to the i-th element. </purpose><description><para>
  3740. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3741. </formalpara>
  3742. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3743. </formalpara>
  3744. </para></description><requires><para><computeroutput>i =&lt; size()</computeroutput></para>
  3745. </requires><returns><para>a iterator to the i-th element.</para>
  3746. </returns></method>
  3747. <method name="nth" cv="const"><type>const_iterator</type><parameter name="i"><paramtype>size_type</paramtype><description><para>The element's index.</para></description></parameter><purpose>Returns a const_iterator to the i-th element. </purpose><description><para>
  3748. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3749. </formalpara>
  3750. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3751. </formalpara>
  3752. </para></description><requires><para><computeroutput>i =&lt; size()</computeroutput></para>
  3753. </requires><returns><para>a const_iterator to the i-th element.</para>
  3754. </returns></method>
  3755. <method name="index_of"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype><description><para>An iterator to the element.</para></description></parameter><purpose>Returns the index of the element pointed by p. </purpose><description><para>
  3756. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3757. </formalpara>
  3758. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3759. </formalpara>
  3760. </para></description><requires><para><computeroutput>begin() &lt;= p &lt;= end()</computeroutput></para>
  3761. </requires><returns><para>The index of the element pointed by p.</para>
  3762. </returns></method>
  3763. <method name="index_of" cv="const"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype><description><para>A const_iterator to the element.</para></description></parameter><purpose>Returns the index of the element pointed by p. </purpose><description><para>
  3764. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3765. </formalpara>
  3766. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3767. </formalpara>
  3768. </para></description><requires><para><computeroutput>begin() &lt;= p &lt;= end()</computeroutput></para>
  3769. </requires><returns><para>a const_iterator to the i-th element.</para>
  3770. </returns></method>
  3771. <method name="front"><type>reference</type><purpose>Returns reference to the first element. </purpose><description><para>
  3772. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3773. </formalpara>
  3774. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3775. </formalpara>
  3776. </para></description><requires><para><computeroutput>!empty</computeroutput>()</para>
  3777. </requires><returns><para>reference to the first element from the beginning of the container.</para>
  3778. </returns></method>
  3779. <method name="front" cv="const"><type>const_reference</type><purpose>Returns const reference to the first element. </purpose><description><para>
  3780. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3781. </formalpara>
  3782. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3783. </formalpara>
  3784. </para></description><requires><para><computeroutput>!empty</computeroutput>()</para>
  3785. </requires><returns><para>const reference to the first element from the beginning of the container.</para>
  3786. </returns></method>
  3787. <method name="back"><type>reference</type><purpose>Returns reference to the last element. </purpose><description><para>
  3788. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3789. </formalpara>
  3790. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3791. </formalpara>
  3792. </para></description><requires><para><computeroutput>!empty</computeroutput>()</para>
  3793. </requires><returns><para>reference to the last element from the beginning of the container.</para>
  3794. </returns></method>
  3795. <method name="back" cv="const"><type>const_reference</type><purpose>Returns const reference to the first element. </purpose><description><para>
  3796. <formalpara><title>Throws</title><para>Nothing by default.</para>
  3797. </formalpara>
  3798. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3799. </formalpara>
  3800. </para></description><requires><para><computeroutput>!empty</computeroutput>()</para>
  3801. </requires><returns><para>const reference to the last element from the beginning of the container.</para>
  3802. </returns></method>
  3803. <method name="data" cv="noexcept"><type>T *</type><purpose>Pointer such that <computeroutput>[data(), data() + size())</computeroutput> is a valid range. For a non-empty vector <computeroutput>data() == &amp;front()</computeroutput>. </purpose><description><para><formalpara><title>Throws</title><para>Nothing.</para>
  3804. </formalpara>
  3805. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3806. </formalpara>
  3807. </para></description></method>
  3808. <method name="data" cv="const noexcept"><type>const T *</type><purpose>Const pointer such that <computeroutput>[data(), data() + size())</computeroutput> is a valid range. For a non-empty vector <computeroutput>data() == &amp;front()</computeroutput>. </purpose><description><para><formalpara><title>Throws</title><para>Nothing.</para>
  3809. </formalpara>
  3810. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3811. </formalpara>
  3812. </para></description></method>
  3813. <method name="begin" cv="noexcept"><type>iterator</type><purpose>Returns iterator to the first element. </purpose><description><para>
  3814. <formalpara><title>Throws</title><para>Nothing.</para>
  3815. </formalpara>
  3816. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3817. </formalpara>
  3818. </para></description><returns><para>iterator to the first element contained in the vector.</para>
  3819. </returns></method>
  3820. <method name="begin" cv="const noexcept"><type>const_iterator</type><purpose>Returns const iterator to the first element. </purpose><description><para>
  3821. <formalpara><title>Throws</title><para>Nothing.</para>
  3822. </formalpara>
  3823. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3824. </formalpara>
  3825. </para></description><returns><para>const_iterator to the first element contained in the vector.</para>
  3826. </returns></method>
  3827. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><purpose>Returns const iterator to the first element. </purpose><description><para>
  3828. <formalpara><title>Throws</title><para>Nothing.</para>
  3829. </formalpara>
  3830. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3831. </formalpara>
  3832. </para></description><returns><para>const_iterator to the first element contained in the vector.</para>
  3833. </returns></method>
  3834. <method name="end" cv="noexcept"><type>iterator</type><purpose>Returns iterator to the one after the last element. </purpose><description><para>
  3835. <formalpara><title>Throws</title><para>Nothing.</para>
  3836. </formalpara>
  3837. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3838. </formalpara>
  3839. </para></description><returns><para>iterator pointing to the one after the last element contained in the vector.</para>
  3840. </returns></method>
  3841. <method name="end" cv="const noexcept"><type>const_iterator</type><purpose>Returns const iterator to the one after the last element. </purpose><description><para>
  3842. <formalpara><title>Throws</title><para>Nothing.</para>
  3843. </formalpara>
  3844. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3845. </formalpara>
  3846. </para></description><returns><para>const_iterator pointing to the one after the last element contained in the vector.</para>
  3847. </returns></method>
  3848. <method name="cend" cv="const noexcept"><type>const_iterator</type><purpose>Returns const iterator to the one after the last element. </purpose><description><para>
  3849. <formalpara><title>Throws</title><para>Nothing.</para>
  3850. </formalpara>
  3851. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3852. </formalpara>
  3853. </para></description><returns><para>const_iterator pointing to the one after the last element contained in the vector.</para>
  3854. </returns></method>
  3855. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><purpose>Returns reverse iterator to the first element of the reversed container. </purpose><description><para>
  3856. <formalpara><title>Throws</title><para>Nothing.</para>
  3857. </formalpara>
  3858. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3859. </formalpara>
  3860. </para></description><returns><para>reverse_iterator pointing to the beginning of the reversed <classname alt="boost::container::static_vector">static_vector</classname>.</para>
  3861. </returns></method>
  3862. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><purpose>Returns const reverse iterator to the first element of the reversed container. </purpose><description><para>
  3863. <formalpara><title>Throws</title><para>Nothing.</para>
  3864. </formalpara>
  3865. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3866. </formalpara>
  3867. </para></description><returns><para>const_reverse_iterator pointing to the beginning of the reversed <classname alt="boost::container::static_vector">static_vector</classname>.</para>
  3868. </returns></method>
  3869. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><purpose>Returns const reverse iterator to the first element of the reversed container. </purpose><description><para>
  3870. <formalpara><title>Throws</title><para>Nothing.</para>
  3871. </formalpara>
  3872. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3873. </formalpara>
  3874. </para></description><returns><para>const_reverse_iterator pointing to the beginning of the reversed <classname alt="boost::container::static_vector">static_vector</classname>.</para>
  3875. </returns></method>
  3876. <method name="rend" cv="noexcept"><type>reverse_iterator</type><purpose>Returns reverse iterator to the one after the last element of the reversed container. </purpose><description><para>
  3877. <formalpara><title>Throws</title><para>Nothing.</para>
  3878. </formalpara>
  3879. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3880. </formalpara>
  3881. </para></description><returns><para>reverse_iterator pointing to the one after the last element of the reversed <classname alt="boost::container::static_vector">static_vector</classname>.</para>
  3882. </returns></method>
  3883. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><purpose>Returns const reverse iterator to the one after the last element of the reversed container. </purpose><description><para>
  3884. <formalpara><title>Throws</title><para>Nothing.</para>
  3885. </formalpara>
  3886. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3887. </formalpara>
  3888. </para></description><returns><para>const_reverse_iterator pointing to the one after the last element of the reversed <classname alt="boost::container::static_vector">static_vector</classname>.</para>
  3889. </returns></method>
  3890. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><purpose>Returns const reverse iterator to the one after the last element of the reversed container. </purpose><description><para>
  3891. <formalpara><title>Throws</title><para>Nothing.</para>
  3892. </formalpara>
  3893. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3894. </formalpara>
  3895. </para></description><returns><para>const_reverse_iterator pointing to the one after the last element of the reversed <classname alt="boost::container::static_vector">static_vector</classname>.</para>
  3896. </returns></method>
  3897. <method name="size" cv="const noexcept"><type>size_type</type><purpose>Returns the number of stored elements. </purpose><description><para>
  3898. <formalpara><title>Throws</title><para>Nothing.</para>
  3899. </formalpara>
  3900. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3901. </formalpara>
  3902. </para></description><returns><para>Number of elements contained in the container.</para>
  3903. </returns></method>
  3904. <method name="empty" cv="const noexcept"><type>bool</type><purpose>Queries if the container contains elements. </purpose><description><para>
  3905. <formalpara><title>Throws</title><para>Nothing.</para>
  3906. </formalpara>
  3907. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3908. </formalpara>
  3909. </para></description><returns><para>true if the number of elements contained in the container is equal to 0.</para>
  3910. </returns></method>
  3911. </method-group>
  3912. <constructor cv="noexcept"><purpose>Constructs an empty <classname alt="boost::container::static_vector">static_vector</classname>. </purpose><description><para><formalpara><title>Throws</title><para>Nothing.</para>
  3913. </formalpara>
  3914. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  3915. </formalpara>
  3916. </para></description></constructor>
  3917. <constructor specifiers="explicit"><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of values which will be contained in the container.</para></description></parameter><purpose>Constructs a <classname alt="boost::container::static_vector">static_vector</classname> containing count value initialized values. </purpose><description><para>
  3918. <formalpara><title>Throws</title><para>If T's value initialization throws.</para>
  3919. </formalpara>
  3920. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3921. </formalpara>
  3922. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3923. </requires></constructor>
  3924. <constructor><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of values which will be contained in the container.</para></description></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><purpose>Constructs a <classname alt="boost::container::static_vector">static_vector</classname> containing count default initialized values. </purpose><description><para>
  3925. <formalpara><title>Throws</title><para>If T's default initialization throws.</para>
  3926. </formalpara>
  3927. <formalpara><title>Complexity</title><para>Linear O(N).</para>
  3928. </formalpara>
  3929. <formalpara><title>Note</title><para>Non-standard extension </para>
  3930. </formalpara>
  3931. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3932. </requires></constructor>
  3933. <constructor><parameter name="count"><paramtype>size_type</paramtype><description><para>The number of copies of a values that will be contained in the container. </para></description></parameter><parameter name="value"><paramtype>value_type const &amp;</paramtype><description><para>The value which will be used to copy construct values.</para></description></parameter><purpose>Constructs a <classname alt="boost::container::static_vector">static_vector</classname> containing count copies of value. </purpose><description><para>
  3934. <formalpara><title>Throws</title><para>If T's copy constructor throws.</para>
  3935. </formalpara>
  3936. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3937. </formalpara>
  3938. </para></description><requires><para><computeroutput>count &lt;= capacity()</computeroutput></para>
  3939. </requires></constructor>
  3940. <constructor><template>
  3941. <template-type-parameter name="Iterator"/>
  3942. </template><parameter name="first"><paramtype>Iterator</paramtype><description><para>The iterator to the first element in range. </para></description></parameter><parameter name="last"><paramtype>Iterator</paramtype><description><para>The iterator to the one after the last element in range.</para></description></parameter><purpose>Constructs a <classname alt="boost::container::static_vector">static_vector</classname> containing copy of a range <computeroutput>[first, last)</computeroutput>. </purpose><description><para>
  3943. <formalpara><title>Throws</title><para>If T's constructor taking a dereferenced Iterator throws.</para>
  3944. </formalpara>
  3945. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3946. </formalpara>
  3947. </para></description><requires><para><itemizedlist>
  3948. <listitem><para><computeroutput>distance(first, last) &lt;= capacity()</computeroutput> </para>
  3949. </listitem>
  3950. <listitem><para>Iterator must meet the <computeroutput>ForwardTraversalIterator</computeroutput> concept.</para>
  3951. </listitem>
  3952. </itemizedlist>
  3953. </para>
  3954. </requires></constructor>
  3955. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype><description><para>std::initializer_list with values to initialize vector.</para></description></parameter><purpose>Constructs a <classname alt="boost::container::static_vector">static_vector</classname> containing copy of a range <computeroutput>[il.begin(), il.end())</computeroutput>. </purpose><description><para>
  3956. <formalpara><title>Throws</title><para>If T's constructor taking a dereferenced std::initializer_list throws.</para>
  3957. </formalpara>
  3958. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3959. </formalpara>
  3960. </para></description><requires><para><itemizedlist>
  3961. <listitem><para><computeroutput>distance(il.begin(), il.end()) &lt;= capacity()</computeroutput></para>
  3962. </listitem>
  3963. </itemizedlist>
  3964. </para>
  3965. </requires></constructor>
  3966. <constructor><parameter name="other"><paramtype><classname>static_vector</classname> const &amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be copied to this one.</para></description></parameter><purpose>Constructs a copy of other <classname alt="boost::container::static_vector">static_vector</classname>. </purpose><description><para>
  3967. <formalpara><title>Throws</title><para>If T's copy constructor throws.</para>
  3968. </formalpara>
  3969. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3970. </formalpara>
  3971. </para></description></constructor>
  3972. <constructor><parameter name="other"><paramtype><classname>static_vector</classname> const &amp;</paramtype></parameter><parameter name=""><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3973. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; value_type &gt;::value))"><parameter name="other"><paramtype><classname>static_vector</classname> &amp;&amp;</paramtype></parameter><parameter name=""><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3974. <constructor specifiers="explicit"><parameter name=""><paramtype>const allocator_type &amp;</paramtype></parameter></constructor>
  3975. <constructor><template>
  3976. <template-nontype-parameter name="C"><type>std::size_t</type></template-nontype-parameter>
  3977. <template-type-parameter name="O"/>
  3978. </template><parameter name="other"><paramtype><classname>static_vector</classname>&lt; T, C, O &gt; const &amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be copied to this one.</para></description></parameter><purpose>Constructs a copy of other <classname alt="boost::container::static_vector">static_vector</classname>. </purpose><description><para>
  3979. <formalpara><title>Throws</title><para>If T's copy constructor throws.</para>
  3980. </formalpara>
  3981. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3982. </formalpara>
  3983. </para></description><requires><para><computeroutput>other.size() &lt;= capacity()</computeroutput>.</para>
  3984. </requires></constructor>
  3985. <constructor cv="noexcept(boost::container::dtl::is_nothrow_move_constructible&lt; value_type &gt;::value))"><parameter name="other"><paramtype><classname>static_vector</classname> &amp;&amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be moved to this one.</para></description></parameter><purpose>Move constructor. Moves Values stored in the other <classname alt="boost::container::static_vector">static_vector</classname> to this one. </purpose><description><para>
  3986. <formalpara><title>Throws</title><para><itemizedlist>
  3987. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput> and T's move constructor throws. </para>
  3988. </listitem>
  3989. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput> and T's copy constructor throws.</para>
  3990. </listitem>
  3991. </itemizedlist>
  3992. </para>
  3993. </formalpara>
  3994. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  3995. </formalpara>
  3996. </para></description></constructor>
  3997. <constructor><template>
  3998. <template-nontype-parameter name="C"><type>std::size_t</type></template-nontype-parameter>
  3999. <template-type-parameter name="O"/>
  4000. </template><parameter name="other"><paramtype><classname>static_vector</classname>&lt; T, C, O &gt; &amp;&amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be moved to this one.</para></description></parameter><purpose>Move constructor. Moves Values stored in the other <classname alt="boost::container::static_vector">static_vector</classname> to this one. </purpose><description><para>
  4001. <formalpara><title>Throws</title><para><itemizedlist>
  4002. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput> and T's move constructor throws. </para>
  4003. </listitem>
  4004. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput> and T's copy constructor throws.</para>
  4005. </listitem>
  4006. </itemizedlist>
  4007. </para>
  4008. </formalpara>
  4009. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4010. </formalpara>
  4011. </para></description><requires><para><computeroutput>other.size() &lt;= capacity()</computeroutput></para>
  4012. </requires></constructor>
  4013. <copy-assignment><type><classname>static_vector</classname> &amp;</type><parameter name="other"><paramtype>const <classname>static_vector</classname> &amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be copied to this one.</para></description></parameter><purpose>Copy assigns Values stored in the other <classname alt="boost::container::static_vector">static_vector</classname> to this one. </purpose><description><para>
  4014. <formalpara><title>Throws</title><para>If T's copy constructor or copy assignment throws.</para>
  4015. </formalpara>
  4016. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4017. </formalpara>
  4018. </para></description></copy-assignment>
  4019. <copy-assignment><type><classname>static_vector</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype><description><para>The std::initializer_list which content will be copied to this one.</para></description></parameter><purpose>Copy assigns Values stored in std::initializer_list to *this. </purpose><description><para>
  4020. <formalpara><title>Throws</title><para>If T's copy constructor or copy assignment throws.</para>
  4021. </formalpara>
  4022. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4023. </formalpara>
  4024. </para></description></copy-assignment>
  4025. <copy-assignment><type><classname>static_vector</classname> &amp;</type><template>
  4026. <template-nontype-parameter name="C"><type>std::size_t</type></template-nontype-parameter>
  4027. <template-type-parameter name="O"/>
  4028. </template><parameter name="other"><paramtype><classname>static_vector</classname>&lt; T, C, O &gt; const &amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be copied to this one.</para></description></parameter><purpose>Copy assigns Values stored in the other <classname alt="boost::container::static_vector">static_vector</classname> to this one. </purpose><description><para>
  4029. <formalpara><title>Throws</title><para>If T's copy constructor or copy assignment throws.</para>
  4030. </formalpara>
  4031. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4032. </formalpara>
  4033. </para></description><requires><para><computeroutput>other.size() &lt;= capacity()</computeroutput></para>
  4034. </requires></copy-assignment>
  4035. <copy-assignment cv="noexcept(boost::container::dtl::is_nothrow_move_assignable&lt; value_type &gt;::value))"><type><classname>static_vector</classname> &amp;</type><parameter name="other"><paramtype><classname>static_vector</classname> &amp;&amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be moved to this one.</para></description></parameter><purpose>Move assignment. Moves Values stored in the other <classname alt="boost::container::static_vector">static_vector</classname> to this one. </purpose><description><para>
  4036. <formalpara><title>Throws</title><para><itemizedlist>
  4037. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput> and T's move constructor or move assignment throws. </para>
  4038. </listitem>
  4039. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput> and T's copy constructor or copy assignment throws.</para>
  4040. </listitem>
  4041. </itemizedlist>
  4042. </para>
  4043. </formalpara>
  4044. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4045. </formalpara>
  4046. </para></description></copy-assignment>
  4047. <copy-assignment><type><classname>static_vector</classname> &amp;</type><template>
  4048. <template-nontype-parameter name="C"><type>std::size_t</type></template-nontype-parameter>
  4049. <template-type-parameter name="O"/>
  4050. </template><parameter name="other"><paramtype><classname>static_vector</classname>&lt; T, C, O &gt; &amp;&amp;</paramtype><description><para>The <classname alt="boost::container::static_vector">static_vector</classname> which content will be moved to this one.</para></description></parameter><purpose>Move assignment. Moves Values stored in the other <classname alt="boost::container::static_vector">static_vector</classname> to this one. </purpose><description><para>
  4051. <formalpara><title>Throws</title><para><itemizedlist>
  4052. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>true</computeroutput> and T's move constructor or move assignment throws. </para>
  4053. </listitem>
  4054. <listitem><para>If <computeroutput>has_nothrow_move&lt;T&gt;::value</computeroutput> is <computeroutput>false</computeroutput> and T's copy constructor or copy assignment throws.</para>
  4055. </listitem>
  4056. </itemizedlist>
  4057. </para>
  4058. </formalpara>
  4059. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4060. </formalpara>
  4061. </para></description><requires><para><computeroutput>other.size() &lt;= capacity()</computeroutput></para>
  4062. </requires></copy-assignment>
  4063. <destructor><purpose>Destructor. Destroys Values stored in this container. </purpose><description><para><formalpara><title>Throws</title><para>Nothing</para>
  4064. </formalpara>
  4065. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4066. </formalpara>
  4067. </para></description></destructor>
  4068. <method-group name="public static functions">
  4069. <method name="capacity" cv="noexcept" specifiers="static"><type>size_type</type><purpose>Returns container's capacity. </purpose><description><para>
  4070. <formalpara><title>Throws</title><para>Nothing.</para>
  4071. </formalpara>
  4072. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  4073. </formalpara>
  4074. </para></description><returns><para>container's capacity.</para>
  4075. </returns></method>
  4076. <method name="max_size" cv="noexcept" specifiers="static"><type>size_type</type><purpose>Returns container's capacity. </purpose><description><para>
  4077. <formalpara><title>Throws</title><para>Nothing.</para>
  4078. </formalpara>
  4079. <formalpara><title>Complexity</title><para>Constant O(1). </para>
  4080. </formalpara>
  4081. </para></description><returns><para>container's capacity.</para>
  4082. </returns></method>
  4083. </method-group>
  4084. </class>
  4085. <function name="operator=="><type>bool</type><template>
  4086. <template-type-parameter name="V"/>
  4087. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4088. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4089. <template-type-parameter name="O1"/>
  4090. <template-type-parameter name="O2"/>
  4091. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; const &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; const &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Checks if contents of two static_vectors are equal. </purpose><description><para>
  4092. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4093. </formalpara>
  4094. </para></description><returns><para><computeroutput>true</computeroutput> if containers have the same size and elements in both containers are equal.</para>
  4095. </returns></function>
  4096. <function name="operator!="><type>bool</type><template>
  4097. <template-type-parameter name="V"/>
  4098. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4099. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4100. <template-type-parameter name="O1"/>
  4101. <template-type-parameter name="O2"/>
  4102. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; const &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; const &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Checks if contents of two static_vectors are not equal. </purpose><description><para>
  4103. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4104. </formalpara>
  4105. </para></description><returns><para><computeroutput>true</computeroutput> if containers have different size or elements in both containers are not equal.</para>
  4106. </returns></function>
  4107. <function name="operator&lt;"><type>bool</type><template>
  4108. <template-type-parameter name="V"/>
  4109. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4110. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4111. <template-type-parameter name="O1"/>
  4112. <template-type-parameter name="O2"/>
  4113. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; const &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; const &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Lexicographically compares static_vectors. </purpose><description><para>
  4114. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4115. </formalpara>
  4116. </para></description><returns><para><computeroutput>true</computeroutput> if x compares lexicographically less than y.</para>
  4117. </returns></function>
  4118. <function name="operator&gt;"><type>bool</type><template>
  4119. <template-type-parameter name="V"/>
  4120. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4121. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4122. <template-type-parameter name="O1"/>
  4123. <template-type-parameter name="O2"/>
  4124. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; const &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; const &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Lexicographically compares static_vectors. </purpose><description><para>
  4125. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4126. </formalpara>
  4127. </para></description><returns><para><computeroutput>true</computeroutput> if y compares lexicographically less than x.</para>
  4128. </returns></function>
  4129. <function name="operator&lt;="><type>bool</type><template>
  4130. <template-type-parameter name="V"/>
  4131. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4132. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4133. <template-type-parameter name="O1"/>
  4134. <template-type-parameter name="O2"/>
  4135. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; const &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; const &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Lexicographically compares static_vectors. </purpose><description><para>
  4136. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4137. </formalpara>
  4138. </para></description><returns><para><computeroutput>true</computeroutput> if y don't compare lexicographically less than x.</para>
  4139. </returns></function>
  4140. <function name="operator&gt;="><type>bool</type><template>
  4141. <template-type-parameter name="V"/>
  4142. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4143. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4144. <template-type-parameter name="O1"/>
  4145. <template-type-parameter name="O2"/>
  4146. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; const &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; const &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Lexicographically compares static_vectors. </purpose><description><para>
  4147. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4148. </formalpara>
  4149. </para></description><returns><para><computeroutput>true</computeroutput> if x don't compare lexicographically less than y.</para>
  4150. </returns></function>
  4151. <function name="swap"><type>void</type><template>
  4152. <template-type-parameter name="V"/>
  4153. <template-nontype-parameter name="C1"><type>std::size_t</type></template-nontype-parameter>
  4154. <template-nontype-parameter name="C2"><type>std::size_t</type></template-nontype-parameter>
  4155. <template-type-parameter name="O1"/>
  4156. <template-type-parameter name="O2"/>
  4157. </template><parameter name="x"><paramtype><classname>static_vector</classname>&lt; V, C1, O1 &gt; &amp;</paramtype><description><para>The first <classname alt="boost::container::static_vector">static_vector</classname>. </para></description></parameter><parameter name="y"><paramtype><classname>static_vector</classname>&lt; V, C2, O2 &gt; &amp;</paramtype><description><para>The second <classname alt="boost::container::static_vector">static_vector</classname>.</para></description></parameter><purpose>Swaps contents of two static_vectors. </purpose><description><para>This function calls static_vector::swap().</para><para>
  4158. <formalpara><title>Complexity</title><para>Linear O(N). </para>
  4159. </formalpara>
  4160. </para></description></function>
  4161. </namespace>
  4162. </namespace>
  4163. </header>
  4164. <header name="boost/container/string.hpp">
  4165. <namespace name="boost">
  4166. <namespace name="container">
  4167. <class name="basic_string"><template>
  4168. <template-type-parameter name="CharT"><purpose><para>The type of character it contains. </para></purpose></template-type-parameter>
  4169. <template-type-parameter name="Traits"><default>std::char_traits&lt;CharT&gt;</default><purpose><para>The Character Traits type, which encapsulates basic character operations </para></purpose></template-type-parameter>
  4170. <template-type-parameter name="Allocator"><default>void</default><purpose><para>The allocator, used for internal memory management. </para></purpose></template-type-parameter>
  4171. </template><inherit access="private">dtl::basic_string_base&lt; real_allocator&lt; CharT, Allocator &gt;::type &gt;</inherit><description><para>The <classname alt="boost::container::basic_string">basic_string</classname> class represents a Sequence of characters. It contains all the usual operations of a Sequence, and, additionally, it contains standard string operations such as search and concatenation.</para><para>The <classname alt="boost::container::basic_string">basic_string</classname> class is parameterized by character type, and by that type's Character Traits.</para><para>This class has performance characteristics very much like vector&lt;&gt;, meaning, for example, that it does not perform reference-count or copy-on-write, and that concatenation of two strings is an O(N) operation.</para><para>Some of <classname alt="boost::container::basic_string">basic_string</classname>'s member functions use an unusual method of specifying positions and ranges. In addition to the conventional method using iterators, many of <classname alt="boost::container::basic_string">basic_string</classname>'s member functions use a single value pos of type size_type to represent a position (in which case the position is begin() + pos, and many of <classname alt="boost::container::basic_string">basic_string</classname>'s member functions use two values, pos and n, to represent a range. In that case pos is the beginning of the range and n is its size. That is, the range is [begin() + pos, begin() + pos + n).</para><para>Note that the C++ standard does not specify the complexity of <classname alt="boost::container::basic_string">basic_string</classname> operations. In this implementation, <classname alt="boost::container::basic_string">basic_string</classname> has performance characteristics very similar to those of vector: access to a single character is O(1), while copy and concatenation are O(N).</para><para>In this implementation, begin(), end(), rbegin(), rend(), operator[], c_str(), and data() do not invalidate iterators. In this implementation, iterators are only invalidated by member functions that explicitly change the string's contents.</para><para>
  4172. </para></description><typedef name="traits_type"><type>Traits</type></typedef>
  4173. <typedef name="value_type"><type>CharT</type></typedef>
  4174. <typedef name="allocator_type"><type>real_allocator&lt; CharT, Allocator &gt;::type</type></typedef>
  4175. <typedef name="pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  4176. <typedef name="const_pointer"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  4177. <typedef name="reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  4178. <typedef name="const_reference"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  4179. <typedef name="size_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  4180. <typedef name="difference_type"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  4181. <typedef name="stored_allocator_type"><type>implementation_defined</type></typedef>
  4182. <typedef name="iterator"><type>implementation_defined</type></typedef>
  4183. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  4184. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  4185. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  4186. <data-member name="npos" specifiers="static"><type>const size_type</type></data-member>
  4187. <method-group name="public member functions">
  4188. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: If allocator's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4189. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  4190. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  4191. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4192. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4193. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4194. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4195. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4196. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4197. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4198. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4199. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4200. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4201. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4202. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4203. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the vector contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4204. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4205. <method name="length" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4206. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4207. <method name="resize"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are copy constructed from x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  4208. <method name="resize"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are value initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  4209. <method name="resize"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are uninitialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  4210. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4211. <method name="reserve"><type>void</type><parameter name="res_arg"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws </para></description></method>
  4212. <method name="shrink_to_fit"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created with previous allocations. The size of the string is unchanged</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  4213. <method name="front" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4214. <method name="front" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4215. <method name="back" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4216. <method name="back" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4217. <method name="operator[]" cv="noexcept"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4218. <method name="operator[]" cv="const noexcept"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4219. <method name="at"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4220. <method name="at" cv="const"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4221. <method name="operator+="><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Calls append(str.data, str.size()).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4222. <method name="operator+="><type><classname>basic_string</classname> &amp;</type><template>
  4223. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4224. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>return append(sv)</computeroutput>. </para></description></method>
  4225. <method name="operator+="><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Calls append(s).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4226. <method name="operator+="><type><classname>basic_string</classname> &amp;</type><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Calls append(1, c).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4227. <method name="operator+="><type><classname>basic_string</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; CharT &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns append(il) </para></description></method>
  4228. <method name="append"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Calls append(str.data(), str.size()).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4229. <method name="append"><type><classname>basic_string</classname> &amp;</type><template>
  4230. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4231. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as return append(sv.data(), sv.size()). </para></description></method>
  4232. <method name="append"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= str.size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to append as the smaller of n and str.size() - pos and calls append(str.data() + pos, rlen).</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws and out_of_range if pos &gt; str.size()</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4233. <method name="append"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: The function replaces the string controlled by *this with a string of length size() + n whose irst size() elements are a copy of the original string controlled by *this and whose remaining elements are a copy of the initial n elements of s.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws length_error if size() + n &gt; max_size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4234. <method name="append"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: Calls append(s, traits::length(s)).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4235. <method name="append"><type><classname>basic_string</classname> &amp;</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to append(basic_string(n, c)).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4236. <method name="append"><type><classname>basic_string</classname> &amp;</type><template>
  4237. <template-type-parameter name="InputIter"/>
  4238. </template><parameter name="first"><paramtype>InputIter</paramtype></parameter><parameter name="last"><paramtype>InputIter</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [first,last) is a valid range.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to append(basic_string(first, last)).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4239. <method name="append"><type><classname>basic_string</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; CharT &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns append(il.begin(), il.size()). </para></description></method>
  4240. <method name="push_back"><type>void</type><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to append(static_cast&lt;size_type&gt;(1), c). </para></description></method>
  4241. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to assign(str, 0, npos).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4242. <method name="assign"><type><classname>basic_string</classname> &amp;</type><template>
  4243. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4244. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to return assign(sv.data(), sv.size()).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4245. <method name="assign" cv="noexcept"><type><classname>basic_string</classname> &amp;</type><parameter name="ms"><paramtype><classname>basic_string</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: The function replaces the string controlled by *this with a string of length str.size() whose elements are a copy of the string controlled by str. Leaves str in a valid but unspecified state.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4246. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= str.size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to assign as the smaller of n and str.size() - pos and calls assign(str.data() + pos rlen).</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or out_of_range if pos &gt; str.size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4247. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: Replaces the string controlled by *this with a string of length n whose elements are a copy of those pointed to by s.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or length_error if n &gt; max_size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4248. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: Calls assign(s, traits::length(s)).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4249. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to assign(basic_string(n, c)).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4250. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="first"><paramtype>const CharT *</paramtype></parameter><parameter name="last"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to assign(basic_string(first, last)). <emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4251. <method name="assign"><type><classname>basic_string</classname> &amp;</type><template>
  4252. <template-type-parameter name="InputIter"/>
  4253. </template><parameter name="first"><paramtype>InputIter</paramtype></parameter><parameter name="last"><paramtype>InputIter</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to assign(basic_string(first, last)).</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4254. <method name="assign"><type><classname>basic_string</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; CharT &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns assign(il.begin(), il.size()). </para></description></method>
  4255. <method name="insert"><type><classname>basic_string</classname> &amp;</type><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= size().</para><para><emphasis role="bold">Effects</emphasis>: Calls insert(pos, str.data(), str.size()).</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or out_of_range if pos &gt; size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4256. <method name="insert"><type><classname>basic_string</classname> &amp;</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos2"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size() and pos2 &lt;= str.size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to insert as the smaller of n and str.size() - pos2 and calls insert(pos1, str.data() + pos2, rlen).</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or out_of_range if pos1 &gt; size() or pos2 &gt; str.size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4257. <method name="insert"><type><classname>basic_string</classname> &amp;</type><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT and pos &lt;= size().</para><para><emphasis role="bold">Effects</emphasis>: Replaces the string controlled by *this with a string of length size() + n whose first pos elements are a copy of the initial elements of the original string controlled by *this and whose next n elements are a copy of the elements in s and whose remaining elements are a copy of the remaining elements of the original string controlled by *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, out_of_range if pos &gt; size() or length_error if size() + n &gt; max_size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4258. <method name="insert"><type><classname>basic_string</classname> &amp;</type><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= size() and s points to an array of at least traits::length(s) + 1 elements of CharT</para><para><emphasis role="bold">Effects</emphasis>: Calls insert(pos, s, traits::length(s)).</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, out_of_range if pos &gt; size() length_error if size() &gt; max_size() - Traits::length(s)</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4259. <method name="insert"><type><classname>basic_string</classname> &amp;</type><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to insert(pos, basic_string(n, c)).</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, out_of_range if pos &gt; size() length_error if size() &gt; max_size() - n</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4260. <method name="insert"><type><classname>basic_string</classname> &amp;</type><template>
  4261. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4262. </template><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <computeroutput>return insert(pos, sv.data(), sv.size())</computeroutput>. </para></description></method>
  4263. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p is a valid iterator on *this.</para><para><emphasis role="bold">Effects</emphasis>: inserts a copy of c before the character referred to by p.</para><para><emphasis role="bold">Returns</emphasis>: An iterator which refers to the copy of the inserted character. </para></description></method>
  4264. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p is a valid iterator on *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts n copies of c before the character referred to by p.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if n is 0. </para></description></method>
  4265. <method name="insert"><type>iterator</type><template>
  4266. <template-type-parameter name="InputIter"/>
  4267. </template><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InputIter</paramtype></parameter><parameter name="last"><paramtype>InputIter</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p is a valid iterator on *this. [first,last) is a valid range.</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to insert(p - begin(), basic_string(first, last)).</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if first == last. </para></description></method>
  4268. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; CharT &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: As if by insert(p, il.begin(), il.end()).</para><para><emphasis role="bold">Returns</emphasis>: An iterator which refers to the copy of the first inserted character, or p if i1 is empty. </para></description></method>
  4269. <method name="pop_back" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the last element from the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant time. </para></description></method>
  4270. <method name="erase"><type><classname>basic_string</classname> &amp;</type><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><parameter name="n"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length xlen of the string to be removed as the smaller of n and size() - pos. The function then replaces the string controlled by *this with a string of length size() - xlen whose first pos elements are a copy of the initial elements of the original string controlled by *this, and whose remaining elements are a copy of the elements of the original string controlled by *this beginning at position pos + xlen.</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos &gt; size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4271. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Removes the character referred to by p.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: An iterator which points to the element immediately following p prior to the element being erased. If no such element exists, end() is returned. </para></description></method>
  4272. <method name="erase" cv="noexcept"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: first and last are valid iterators on *this, defining a range [first,last).</para><para><emphasis role="bold">Effects</emphasis>: Removes the characters in the range [first,last).</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: An iterator which points to the element pointed to by last prior to the other elements being erased. If no such element exists, end() is returned. </para></description></method>
  4273. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the vector. </para></description></method>
  4274. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size().</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(pos1, n1, str.data(), str.size()).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws or out_of_range if pos1 &gt; size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4275. <method name="replace"><type><classname>basic_string</classname> &amp;</type><template>
  4276. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4277. </template><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Calls <computeroutput>return replace(pos1, n1, sv.data(), sv.size());</computeroutput>. </para></description></method>
  4278. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos2"><paramtype>size_type</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size() and pos2 &lt;= str.size().</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to be inserted as the smaller of n2 and str.size() - pos2 and calls replace(pos1, n1, str.data() + pos2, rlen).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws, out_of_range if pos1 &gt; size() or pos2 &gt; str.size().</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4279. <method name="replace"><type><classname>basic_string</classname> &amp;</type><template>
  4280. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4281. </template><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos2"><paramtype>size_type</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size() or pos2 &gt; sv.size().</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to be inserted as the smaller of n2 and sv.size() - pos2 and calls <computeroutput>replace(pos1, n1, sv.data() + pos2, rlen)</computeroutput>.</para><para><emphasis role="bold">Returns</emphasis>: *this. </para></description></method>
  4282. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size() and s points to an array of at least n2 elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length xlen of the string to be removed as the smaller of n1 and size() - pos1. If size() - xlen &gt;= max_size() - n2 throws length_error. Otherwise, the function replaces the string controlled by *this with a string of length size() - xlen + n2 whose first pos1 elements are a copy of the initial elements of the original string controlled by *this, whose next n2 elements are a copy of the initial n2 elements of s, and whose remaining elements are a copy of the elements of the original string controlled by *this beginning at position pos + xlen.</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws, out_of_range if pos1 &gt; size() or length_error if the length of the resulting string would exceed max_size()</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4283. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size() and s points to an array of at least n2 elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length xlen of the string to be removed as the smaller of n1 and size() - pos1. If size() - xlen &gt;= max_size() - n2 throws length_error. Otherwise, the function replaces the string controlled by *this with a string of length size() - xlen + n2 whose first pos1 elements are a copy of the initial elements of the original string controlled by *this, whose next n2 elements are a copy of the initial n2 elements of s, and whose remaining elements are a copy of the elements of the original string controlled by *this beginning at position pos + xlen.</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws, out_of_range if pos1 &gt; size() or length_error if the length of the resulting string would exceed max_size()</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4284. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size().</para><para><emphasis role="bold">Effects</emphasis>: Equivalent to replace(pos1, n1, basic_string(n2, c)).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws, out_of_range if pos1 &gt; size() or length_error if the length of the resulting string would exceed max_size()</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4285. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(),i1) and [i1,i2) are valid ranges.</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(i1 - begin(), i2 - i1, str).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4286. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(),i1) and [i1,i2) are valid ranges and s points to an array of at least n elements</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(i1 - begin(), i2 - i1, s, n).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4287. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(),i1) and [i1,i2) are valid ranges and s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(i1 - begin(), i2 - i1, s, traits::length(s)).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4288. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(),i1) and [i1,i2) are valid ranges.</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(i1 - begin(), i2 - i1, basic_string(n, c)).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4289. <method name="replace"><type><classname>basic_string</classname> &amp;</type><template>
  4290. <template-type-parameter name="InputIter"/>
  4291. </template><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="j1"><paramtype>InputIter</paramtype></parameter><parameter name="j2"><paramtype>InputIter</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(),i1), [i1,i2) and [j1,j2) are valid ranges.</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(i1 - begin(), i2 - i1, basic_string(j1, j2)).</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws</para><para><emphasis role="bold">Returns</emphasis>: *this </para></description></method>
  4292. <method name="replace"><type><classname>basic_string</classname> &amp;</type><template>
  4293. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4294. </template><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(), i1) and [i1, i2) are valid ranges.</para><para><emphasis role="bold">Effects</emphasis>: Calls <computeroutput>replace(i1 - begin(), i2 - i1, sv).</computeroutput>.</para><para><emphasis role="bold">Returns</emphasis>: *this. </para></description></method>
  4295. <method name="replace"><type><classname>basic_string</classname> &amp;</type><parameter name="i1"><paramtype>const_iterator</paramtype></parameter><parameter name="i2"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; CharT &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: [begin(), i1) and [i1, i2) are valid ranges.</para><para><emphasis role="bold">Effects</emphasis>: Calls replace(i1 - begin(), i2 - i1, il.begin(), il.size()).</para><para><emphasis role="bold">Returns</emphasis>: *this. </para></description></method>
  4296. <method name="copy" cv="const"><type>size_type</type><parameter name="s"><paramtype>CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to copy as the smaller of n and size() - pos. s shall designate an array of at least rlen elements. The function then replaces the string designated by s with a string of length rlen whose elements are a copy of the string controlled by *this beginning at position pos. The function does not append a null object to the string designated by s.</para><para><emphasis role="bold">Throws</emphasis>: if memory allocation throws, out_of_range if pos &gt; size().</para><para><emphasis role="bold">Returns</emphasis>: rlen </para></description></method>
  4297. <method name="swap" cv="noexcept(allocator_traits_type::propagate_on_container_swap::value||allocator_traits_type::is_always_equal::value))"><type>void</type><parameter name="x"><paramtype><classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: *this contains the same sequence of characters that was in s, s contains the same sequence of characters that was in *this.</para><para><emphasis role="bold">Throws</emphasis>: Nothing </para></description></method>
  4298. <method name="c_str" cv="const noexcept"><type>const CharT *</type><description><para><emphasis role="bold">Requires</emphasis>: The program shall not alter any of the values stored in the character array.</para><para><emphasis role="bold">Returns</emphasis>: A pointer p such that p + i == &amp;operator[](i) for each i in [0,size()].</para><para><emphasis role="bold">Complexity</emphasis>: constant time. </para></description></method>
  4299. <method name="data" cv="const noexcept"><type>const CharT *</type><description><para><emphasis role="bold">Requires</emphasis>: The program shall not alter any of the values stored in the character array.</para><para><emphasis role="bold">Returns</emphasis>: A pointer p such that p + i == &amp;operator[](i) for each i in [0,size()].</para><para><emphasis role="bold">Complexity</emphasis>: constant time. </para></description></method>
  4300. <method name="data" cv="noexcept"><type>CharT *</type><description><para><emphasis role="bold">Returns</emphasis>: A pointer p such that p + i == &amp;operator[](i) for each i in [0,size()].</para><para><emphasis role="bold">Complexity</emphasis>: constant time. </para></description></method>
  4301. <method name="conversion-operator" cv="const noexcept"><type>BasicStringView&lt; CharT, Traits &gt;</type><template>
  4302. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4303. </template><description><para><emphasis role="bold">Returns</emphasis>: a string_view to the characters in the string.</para><para><emphasis role="bold">Complexity</emphasis>: constant time. </para></description></method>
  4304. <method name="to_view" cv="const noexcept"><type>BasicStringView</type><template>
  4305. <template-type-parameter name="BasicStringView"/>
  4306. </template><description><para><emphasis role="bold">Returns</emphasis>: a string_view to the characters in the string.</para><para><emphasis role="bold">Complexity</emphasis>: constant time.</para><para><emphasis role="bold">Note</emphasis>: This function is available to write portable code for compilers that don't support templated conversion operators. </para></description></method>
  4307. <method name="find" cv="const"><type>size_type</type><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the lowest position xpos, if possible, such that both of the following conditions hold: 1) pos &lt;= xpos and xpos + str.size() &lt;= size(); 2) traits::eq(at(xpos+I), str.at(I)) for all elements I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4308. <method name="find" cv="const"><type>size_type</type><template>
  4309. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4310. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the lowest position xpos, if possible, such that both of the following conditions hold: 1) pos &lt;= xpos and xpos + sv.size() &lt;= size(); 2) traits::eq(at(xpos+I), sv.at(I)) for all elements I of the string controlled by sv.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4311. <method name="find" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find(basic_string&lt;CharT,traits,allocator_type&gt;(s,n),pos). </para></description></method>
  4312. <method name="find" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find(basic_string(s), pos). </para></description></method>
  4313. <method name="find" cv="const"><type>size_type</type><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find(basic_string&lt;CharT,traits,allocator_type&gt;(1,c), pos). </para></description></method>
  4314. <method name="rfind" cv="const"><type>size_type</type><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the highest position xpos, if possible, such that both of the following conditions obtain: a) xpos &lt;= pos and xpos + str.size() &lt;= size(); b) traits::eq(at(xpos+I), str.at(I)) for all elements I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4315. <method name="rfind" cv="const"><type>size_type</type><template>
  4316. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4317. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the highest position xpos, if possible, such that both of the following conditions obtain: a) xpos &lt;= pos and xpos + sv.size() &lt;= size(); b) traits::eq(at(xpos+I), sv.at(I)) for all elements I of the string controlled by sv.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4318. <method name="rfind" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: rfind(basic_string(s, n), pos). </para></description></method>
  4319. <method name="rfind" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos &lt;= size() and s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: rfind(basic_string(s), pos). </para></description></method>
  4320. <method name="rfind" cv="const"><type>size_type</type><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: rfind(basic_string&lt;CharT,traits,allocator_type&gt;(1,c),pos). </para></description></method>
  4321. <method name="find_first_of" cv="const"><type>size_type</type><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the lowest position xpos, if possible, such that both of the following conditions obtain: a) pos &lt;= xpos and xpos &lt; size(); b) traits::eq(at(xpos), str.at(I)) for some element I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4322. <method name="find_first_of" cv="const"><type>size_type</type><template>
  4323. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4324. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the lowest position xpos, if possible, such that both of the following conditions obtain: a) pos &lt;= xpos and xpos &lt; size(); b) traits::eq(at(xpos), sv.at(I)) for some element I of the string controlled by sv.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4325. <method name="find_first_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_first_of(basic_string(s, n), pos). </para></description></method>
  4326. <method name="find_first_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_first_of(basic_string(s), pos). </para></description></method>
  4327. <method name="find_first_of" cv="const"><type>size_type</type><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_first_of(basic_string&lt;CharT,traits,allocator_type&gt;(1,c), pos). </para></description></method>
  4328. <method name="find_last_of" cv="const"><type>size_type</type><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the highest position xpos, if possible, such that both of the following conditions obtain: a) xpos &lt;= pos and xpos &lt; size(); b) traits::eq(at(xpos), str.at(I)) for some element I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4329. <method name="find_last_of" cv="const"><type>size_type</type><template>
  4330. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4331. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the highest position xpos, if possible, such that both of the following conditions obtain: a) xpos &lt;= pos and xpos &lt; size(); b) traits::eq(at(xpos), str.at(I)) for some element I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4332. <method name="find_last_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_last_of(basic_string(s, n), pos). </para></description></method>
  4333. <method name="find_last_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_last_of(basic_string&lt;CharT,traits,allocator_type&gt;(1,c),pos). </para></description></method>
  4334. <method name="find_last_of" cv="const"><type>size_type</type><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_last_of(basic_string(s), pos). </para></description></method>
  4335. <method name="find_first_not_of" cv="const"><type>size_type</type><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the lowest position xpos, if possible, such that both of the following conditions obtain: a) pos &lt;= xpos and xpos &lt; size(); b) traits::eq(at(xpos), str.at(I)) for no element I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4336. <method name="find_first_not_of" cv="const"><type>size_type</type><template>
  4337. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4338. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the lowest position xpos, if possible, such that both of the following conditions obtain: a) pos &lt;= xpos and xpos &lt; size(); b) traits::eq(at(xpos), sv.at(I)) for no element I of the string controlled by sv.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4339. <method name="find_first_not_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_first_not_of(basic_string(s, n), pos). </para></description></method>
  4340. <method name="find_first_not_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_first_not_of(basic_string(s), pos). </para></description></method>
  4341. <method name="find_first_not_of" cv="const"><type>size_type</type><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_first_not_of(basic_string(1, c), pos). </para></description></method>
  4342. <method name="find_last_not_of" cv="const"><type>size_type</type><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the highest position xpos, if possible, such that both of the following conditions obtain: a) xpos &lt;= pos and xpos &lt; size(); b) traits::eq(at(xpos), str.at(I)) for no element I of the string controlled by str.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4343. <method name="find_last_not_of" cv="const"><type>size_type</type><template>
  4344. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4345. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the highest position xpos, if possible, such that both of the following conditions obtain: a) xpos &lt;= pos and xpos &lt; size(); b) traits::eq(at(xpos), sv.at(I)) for no element I of the string controlled by sv.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: xpos if the function can determine such a value for xpos. Otherwise, returns npos. </para></description></method>
  4346. <method name="find_last_not_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least n elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_last_not_of(basic_string(s, n), pos). </para></description></method>
  4347. <method name="find_last_not_of" cv="const"><type>size_type</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_last_not_of(basic_string(s), pos). </para></description></method>
  4348. <method name="find_last_not_of" cv="const"><type>size_type</type><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: find_last_not_of(basic_string(1, c), pos). </para></description></method>
  4349. <method name="substr" cv="const"><type><classname>basic_string</classname></type><parameter name="pos"><paramtype>size_type</paramtype><default>0</default></parameter><parameter name="n"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: Requires: pos &lt;= size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to copy as the smaller of n and size() - pos.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or out_of_range if pos &gt; size().</para><para><emphasis role="bold">Returns</emphasis>: basic_string&lt;CharT,traits,allocator_type&gt;(data()+pos,rlen). </para></description></method>
  4350. <method name="compare" cv="const"><type>int</type><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to compare as the smaller of size() and str.size(). The function then compares the two strings by calling traits::compare(data(), str.data(), rlen).</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: The nonzero result if the result of the comparison is nonzero. Otherwise, returns a value &lt; 0 if size() &lt; str.size(), a 0 value if size() == str.size(), and value &gt; 0 if size() &gt; str.size() </para></description></method>
  4351. <method name="compare" cv="const"><type>int</type><template>
  4352. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4353. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: compare(basic_string(sv)). </para></description></method>
  4354. <method name="compare" cv="const"><type>int</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to compare as the smaller of (this-&gt;size() - pos1), n1 and str.size(). The function then compares the two strings by calling traits::compare(data()+pos1, str.data(), rlen).</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size()</para><para><emphasis role="bold">Returns</emphasis>:basic_string(*this,pos1,n1).compare(str). </para></description></method>
  4355. <method name="compare" cv="const"><type>int</type><template>
  4356. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4357. </template><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size()</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size()</para><para><emphasis role="bold">Returns</emphasis>:basic_string(*this,pos1,n1).compare(sv). </para></description></method>
  4358. <method name="compare" cv="const"><type>int</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="str"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos2"><paramtype>size_type</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size() and pos2 &lt;= str.size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to copy as the smaller of</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size() or pos2 &gt; str.size()</para><para><emphasis role="bold">Returns</emphasis>: basic_string(*this, pos1, n1).compare(basic_string(str, pos2, n2)). </para></description></method>
  4359. <method name="compare" cv="const"><type>int</type><template>
  4360. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4361. </template><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="pos2"><paramtype>size_type</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &lt;= size() and pos2 &lt;= str.size()</para><para><emphasis role="bold">Effects</emphasis>: Determines the effective length rlen of the string to copy as the smaller of</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size() or pos2 &gt; sv.size()</para><para><emphasis role="bold">Returns</emphasis>: basic_string(*this, pos1, n1).compare(BasicStringView&lt;CharT, Traits&gt;(sv, pos2, n2)). </para></description></method>
  4362. <method name="compare" cv="const"><type>int</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Returns</emphasis>: compare(basic_string(s)). </para></description></method>
  4363. <method name="compare" cv="const"><type>int</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n2"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &gt; size() and s points to an array of at least n2 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size()</para><para><emphasis role="bold">Returns</emphasis>: basic_string(*this, pos, n1).compare(basic_string(s, n2)). </para></description></method>
  4364. <method name="compare" cv="const"><type>int</type><parameter name="pos1"><paramtype>size_type</paramtype></parameter><parameter name="n1"><paramtype>size_type</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: pos1 &gt; size() and s points to an array of at least traits::length(s) + 1 elements of CharT.</para><para><emphasis role="bold">Throws</emphasis>: out_of_range if pos1 &gt; size()</para><para><emphasis role="bold">Returns</emphasis>: basic_string(*this, pos, n1).compare(basic_string(s, n2)). </para></description></method>
  4365. </method-group>
  4366. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Default constructs a <classname alt="boost::container::basic_string">basic_string</classname>.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor throws. </para></description></constructor>
  4367. <constructor specifiers="explicit" cv="noexcept"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing </para></description></constructor>
  4368. <constructor><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::basic_string">basic_string</classname>.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor or allocation throws. </para></description></constructor>
  4369. <constructor specifiers="explicit"><template>
  4370. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4371. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <classname alt="boost::container::basic_string">basic_string</classname>(sv.data(), sv.size(), a).</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's default constructor or allocation throws. </para></description></constructor>
  4372. <constructor cv="noexcept"><parameter name="s"><paramtype><classname>basic_string</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves s's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  4373. <constructor><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a <classname alt="boost::container::basic_string">basic_string</classname> using the specified allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation throws. </para></description></constructor>
  4374. <constructor><parameter name="s"><paramtype><classname>basic_string</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor using the specified allocator. Moves s's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == s.get_allocator(), linear otherwise. </para></description></constructor>
  4375. <constructor><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype><default>npos</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> with a default-constructed allocator, and is initialized by a specific number of characters of the s string. </para></description></constructor>
  4376. <constructor><parameter name="s"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><parameter name="pos"><paramtype>size_type</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter, and is initialized by a specific number of characters of the s string. </para></description></constructor>
  4377. <constructor><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking a default-constructed allocator, and is initialized by a specific number of characters of the s c-string. </para></description></constructor>
  4378. <constructor><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter, and is initialized by a specific number of characters of the s c-string. </para></description></constructor>
  4379. <constructor><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> with a default-constructed allocator, and is initialized by the null-terminated s c-string. </para></description></constructor>
  4380. <constructor><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter, and is initialized by the null-terminated s c-string. </para></description></constructor>
  4381. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> with a default-constructed allocator, and is initialized by n copies of c. </para></description></constructor>
  4382. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter, and is initialized by n copies of c. </para></description></constructor>
  4383. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> with a default-constructed allocator, and is initialized by n default-initialized characters. </para></description></constructor>
  4384. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter, and is initialized by n default-initialized characters. </para></description></constructor>
  4385. <constructor><template>
  4386. <template-type-parameter name="InputIterator"/>
  4387. </template><parameter name="f"><paramtype>InputIterator</paramtype></parameter><parameter name="l"><paramtype>InputIterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> with a default-constructed allocator, and a range of iterators. </para></description></constructor>
  4388. <constructor><template>
  4389. <template-type-parameter name="InputIterator"/>
  4390. </template><parameter name="f"><paramtype>InputIterator</paramtype></parameter><parameter name="l"><paramtype>InputIterator</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a <classname alt="boost::container::basic_string">basic_string</classname> taking the allocator as parameter, and a range of iterators. </para></description></constructor>
  4391. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Same as <classname alt="boost::container::basic_string">basic_string</classname>(il.begin(), il.end(), a). </para></description></constructor>
  4392. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys the <classname alt="boost::container::basic_string">basic_string</classname>. All used memory is deallocated.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></destructor>
  4393. <copy-assignment><type><classname>basic_string</classname> &amp;</type><parameter name="x"><paramtype>const <classname>basic_string</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a string.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></copy-assignment>
  4394. <copy-assignment cv="noexcept(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value))"><type><classname>basic_string</classname> &amp;</type><parameter name="x"><paramtype><classname>basic_string</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and allocation throws</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  4395. <copy-assignment><type><classname>basic_string</classname> &amp;</type><parameter name="s"><paramtype>const CharT *</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assignment from a null-terminated c-string. </para></description></copy-assignment>
  4396. <copy-assignment><type><classname>basic_string</classname> &amp;</type><parameter name="c"><paramtype>CharT</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns *this = basic_string(1, c). </para></description></copy-assignment>
  4397. <copy-assignment><type><classname>basic_string</classname> &amp;</type><template>
  4398. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4399. </template><parameter name="sv"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Equivalent to return assign(sv). </para></description></copy-assignment>
  4400. <copy-assignment><type><classname>basic_string</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; CharT &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns *this = basic_string(il); </para></description></copy-assignment>
  4401. </class><typedef name="string"><description><para>Typedef for a <classname alt="boost::container::basic_string">basic_string</classname> of narrow characters </para></description><type><classname>basic_string</classname>&lt; char,std::char_traits&lt; char &gt;,<classname>new_allocator</classname>&lt; char &gt; &gt;</type></typedef>
  4402. <typedef name="wstring"><description><para>Typedef for a <classname alt="boost::container::basic_string">basic_string</classname> of narrow characters </para></description><type><classname>basic_string</classname>&lt; wchar_t,std::char_traits&lt; wchar_t &gt;,<classname>new_allocator</classname>&lt; wchar_t &gt; &gt;</type></typedef>
  4403. <function name="basic_string"><type/><template>
  4404. <template-type-parameter name="InputIterator"/>
  4405. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  4406. <function name="basic_string"><type/><template>
  4407. <template-type-parameter name="InputIterator"/>
  4408. <template-type-parameter name="Allocator"/>
  4409. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  4410. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4411. <template-type-parameter name="CharT"/>
  4412. <template-type-parameter name="Traits"/>
  4413. <template-type-parameter name="Allocator"/>
  4414. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4415. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4416. <template-type-parameter name="CharT"/>
  4417. <template-type-parameter name="Traits"/>
  4418. <template-type-parameter name="Allocator"/>
  4419. </template><parameter name="x"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;&amp;</paramtype></parameter><parameter name="y"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;&amp;</paramtype></parameter></function>
  4420. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4421. <template-type-parameter name="CharT"/>
  4422. <template-type-parameter name="Traits"/>
  4423. <template-type-parameter name="Allocator"/>
  4424. </template><parameter name="x"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;&amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4425. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4426. <template-type-parameter name="CharT"/>
  4427. <template-type-parameter name="Traits"/>
  4428. <template-type-parameter name="Allocator"/>
  4429. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;&amp;</paramtype></parameter></function>
  4430. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4431. <template-type-parameter name="CharT"/>
  4432. <template-type-parameter name="Traits"/>
  4433. <template-type-parameter name="Allocator"/>
  4434. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</paramtype></parameter></function>
  4435. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4436. <template-type-parameter name="CharT"/>
  4437. <template-type-parameter name="Traits"/>
  4438. <template-type-parameter name="Allocator"/>
  4439. </template><parameter name="x"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4440. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4441. <template-type-parameter name="CharT"/>
  4442. <template-type-parameter name="Traits"/>
  4443. <template-type-parameter name="Allocator"/>
  4444. </template><parameter name="c"><paramtype>CharT</paramtype></parameter><parameter name="y"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</paramtype></parameter></function>
  4445. <function name="operator+"><type><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</type><template>
  4446. <template-type-parameter name="CharT"/>
  4447. <template-type-parameter name="Traits"/>
  4448. <template-type-parameter name="Allocator"/>
  4449. </template><parameter name="x"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt;</paramtype></parameter><parameter name="c"><paramtype>const CharT</paramtype></parameter></function>
  4450. <function name="operator=="><type>bool</type><template>
  4451. <template-type-parameter name="CharT"/>
  4452. <template-type-parameter name="Traits"/>
  4453. <template-type-parameter name="Allocator"/>
  4454. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4455. <function name="operator=="><type>bool</type><template>
  4456. <template-type-parameter name="CharT"/>
  4457. <template-type-parameter name="Traits"/>
  4458. <template-type-parameter name="Allocator"/>
  4459. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4460. <function name="operator=="><type>bool</type><template>
  4461. <template-type-parameter name="CharT"/>
  4462. <template-type-parameter name="Traits"/>
  4463. <template-type-parameter name="Allocator"/>
  4464. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4465. <function name="operator=="><type>bool</type><template>
  4466. <template-type-parameter name="CharT"/>
  4467. <template-type-parameter name="Traits"/>
  4468. <template-type-parameter name="Allocator"/>
  4469. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4470. </template><parameter name="x"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4471. <function name="operator=="><type>bool</type><template>
  4472. <template-type-parameter name="CharT"/>
  4473. <template-type-parameter name="Traits"/>
  4474. <template-type-parameter name="Allocator"/>
  4475. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4476. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter></function>
  4477. <function name="operator!="><type>bool</type><template>
  4478. <template-type-parameter name="CharT"/>
  4479. <template-type-parameter name="Traits"/>
  4480. <template-type-parameter name="Allocator"/>
  4481. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4482. <function name="operator!="><type>bool</type><template>
  4483. <template-type-parameter name="CharT"/>
  4484. <template-type-parameter name="Traits"/>
  4485. <template-type-parameter name="Allocator"/>
  4486. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4487. <function name="operator!="><type>bool</type><template>
  4488. <template-type-parameter name="CharT"/>
  4489. <template-type-parameter name="Traits"/>
  4490. <template-type-parameter name="Allocator"/>
  4491. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4492. <function name="operator!="><type>bool</type><template>
  4493. <template-type-parameter name="CharT"/>
  4494. <template-type-parameter name="Traits"/>
  4495. <template-type-parameter name="Allocator"/>
  4496. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4497. </template><parameter name="x"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4498. <function name="operator!="><type>bool</type><template>
  4499. <template-type-parameter name="CharT"/>
  4500. <template-type-parameter name="Traits"/>
  4501. <template-type-parameter name="Allocator"/>
  4502. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4503. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter></function>
  4504. <function name="operator&lt;"><type>bool</type><template>
  4505. <template-type-parameter name="CharT"/>
  4506. <template-type-parameter name="Traits"/>
  4507. <template-type-parameter name="Allocator"/>
  4508. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4509. <function name="operator&lt;"><type>bool</type><template>
  4510. <template-type-parameter name="CharT"/>
  4511. <template-type-parameter name="Traits"/>
  4512. <template-type-parameter name="Allocator"/>
  4513. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4514. <function name="operator&lt;"><type>bool</type><template>
  4515. <template-type-parameter name="CharT"/>
  4516. <template-type-parameter name="Traits"/>
  4517. <template-type-parameter name="Allocator"/>
  4518. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4519. <function name="operator&lt;"><type>bool</type><template>
  4520. <template-type-parameter name="CharT"/>
  4521. <template-type-parameter name="Traits"/>
  4522. <template-type-parameter name="Allocator"/>
  4523. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4524. </template><parameter name="x"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4525. <function name="operator&lt;"><type>bool</type><template>
  4526. <template-type-parameter name="CharT"/>
  4527. <template-type-parameter name="Traits"/>
  4528. <template-type-parameter name="Allocator"/>
  4529. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4530. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter></function>
  4531. <function name="operator&gt;"><type>bool</type><template>
  4532. <template-type-parameter name="CharT"/>
  4533. <template-type-parameter name="Traits"/>
  4534. <template-type-parameter name="Allocator"/>
  4535. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4536. <function name="operator&gt;"><type>bool</type><template>
  4537. <template-type-parameter name="CharT"/>
  4538. <template-type-parameter name="Traits"/>
  4539. <template-type-parameter name="Allocator"/>
  4540. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4541. <function name="operator&gt;"><type>bool</type><template>
  4542. <template-type-parameter name="CharT"/>
  4543. <template-type-parameter name="Traits"/>
  4544. <template-type-parameter name="Allocator"/>
  4545. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4546. <function name="operator&gt;"><type>bool</type><template>
  4547. <template-type-parameter name="CharT"/>
  4548. <template-type-parameter name="Traits"/>
  4549. <template-type-parameter name="Allocator"/>
  4550. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4551. </template><parameter name="x"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4552. <function name="operator&gt;"><type>bool</type><template>
  4553. <template-type-parameter name="CharT"/>
  4554. <template-type-parameter name="Traits"/>
  4555. <template-type-parameter name="Allocator"/>
  4556. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4557. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter></function>
  4558. <function name="operator&lt;="><type>bool</type><template>
  4559. <template-type-parameter name="CharT"/>
  4560. <template-type-parameter name="Traits"/>
  4561. <template-type-parameter name="Allocator"/>
  4562. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4563. <function name="operator&lt;="><type>bool</type><template>
  4564. <template-type-parameter name="CharT"/>
  4565. <template-type-parameter name="Traits"/>
  4566. <template-type-parameter name="Allocator"/>
  4567. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4568. <function name="operator&lt;="><type>bool</type><template>
  4569. <template-type-parameter name="CharT"/>
  4570. <template-type-parameter name="Traits"/>
  4571. <template-type-parameter name="Allocator"/>
  4572. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4573. <function name="operator&lt;="><type>bool</type><template>
  4574. <template-type-parameter name="CharT"/>
  4575. <template-type-parameter name="Traits"/>
  4576. <template-type-parameter name="Allocator"/>
  4577. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4578. </template><parameter name="x"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4579. <function name="operator&lt;="><type>bool</type><template>
  4580. <template-type-parameter name="CharT"/>
  4581. <template-type-parameter name="Traits"/>
  4582. <template-type-parameter name="Allocator"/>
  4583. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4584. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter></function>
  4585. <function name="operator&gt;="><type>bool</type><template>
  4586. <template-type-parameter name="CharT"/>
  4587. <template-type-parameter name="Traits"/>
  4588. <template-type-parameter name="Allocator"/>
  4589. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4590. <function name="operator&gt;="><type>bool</type><template>
  4591. <template-type-parameter name="CharT"/>
  4592. <template-type-parameter name="Traits"/>
  4593. <template-type-parameter name="Allocator"/>
  4594. </template><parameter name="s"><paramtype>const CharT *</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4595. <function name="operator&gt;="><type>bool</type><template>
  4596. <template-type-parameter name="CharT"/>
  4597. <template-type-parameter name="Traits"/>
  4598. <template-type-parameter name="Allocator"/>
  4599. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const CharT *</paramtype></parameter></function>
  4600. <function name="operator&gt;="><type>bool</type><template>
  4601. <template-type-parameter name="CharT"/>
  4602. <template-type-parameter name="Traits"/>
  4603. <template-type-parameter name="Allocator"/>
  4604. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4605. </template><parameter name="x"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter><parameter name="y"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4606. <function name="operator&gt;="><type>bool</type><template>
  4607. <template-type-parameter name="CharT"/>
  4608. <template-type-parameter name="Traits"/>
  4609. <template-type-parameter name="Allocator"/>
  4610. <template-nontype-parameter name="BasicStringView"><type>template&lt; class, class &gt; class</type></template-nontype-parameter>
  4611. </template><parameter name="x"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype>BasicStringView&lt; CharT, Traits &gt;</paramtype></parameter></function>
  4612. <function name="swap"><type>void</type><template>
  4613. <template-type-parameter name="CharT"/>
  4614. <template-type-parameter name="Traits"/>
  4615. <template-type-parameter name="Allocator"/>
  4616. </template><parameter name="x"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4617. <function name="operator&lt;&lt;"><type>std::basic_ostream&lt; CharT, Traits &gt; &amp;</type><template>
  4618. <template-type-parameter name="CharT"/>
  4619. <template-type-parameter name="Traits"/>
  4620. <template-type-parameter name="Allocator"/>
  4621. </template><parameter name="os"><paramtype>std::basic_ostream&lt; CharT, Traits &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype>const <classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4622. <function name="operator&gt;&gt;"><type>std::basic_istream&lt; CharT, Traits &gt; &amp;</type><template>
  4623. <template-type-parameter name="CharT"/>
  4624. <template-type-parameter name="Traits"/>
  4625. <template-type-parameter name="Allocator"/>
  4626. </template><parameter name="is"><paramtype>std::basic_istream&lt; CharT, Traits &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4627. <function name="getline"><type>std::basic_istream&lt; CharT, Traits &gt; &amp;</type><template>
  4628. <template-type-parameter name="CharT"/>
  4629. <template-type-parameter name="Traits"/>
  4630. <template-type-parameter name="Allocator"/>
  4631. </template><parameter name="is"><paramtype>std::istream &amp;</paramtype></parameter><parameter name="s"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter><parameter name="delim"><paramtype>CharT</paramtype></parameter></function>
  4632. <function name="getline"><type>std::basic_istream&lt; CharT, Traits &gt; &amp;</type><template>
  4633. <template-type-parameter name="CharT"/>
  4634. <template-type-parameter name="Traits"/>
  4635. <template-type-parameter name="Allocator"/>
  4636. </template><parameter name="is"><paramtype>std::basic_istream&lt; CharT, Traits &gt; &amp;</paramtype></parameter><parameter name="s"><paramtype><classname>basic_string</classname>&lt; CharT, Traits, Allocator &gt; &amp;</paramtype></parameter></function>
  4637. <function name="hash_value"><type>std::size_t</type><template>
  4638. <template-type-parameter name="Ch"/>
  4639. <template-type-parameter name="Allocator"/>
  4640. </template><parameter name="v"><paramtype><classname>basic_string</classname>&lt; Ch, std::char_traits&lt; Ch &gt;, Allocator &gt; const &amp;</paramtype></parameter></function>
  4641. </namespace>
  4642. </namespace>
  4643. </header>
  4644. <header name="boost/container/pmr/string.hpp">
  4645. <namespace name="boost">
  4646. <namespace name="container">
  4647. <namespace name="pmr">
  4648. <struct name="basic_string_of"><template>
  4649. <template-type-parameter name="CharT"/>
  4650. <template-type-parameter name="Traits"><default>std::char_traits&lt;CharT&gt;</default></template-type-parameter>
  4651. </template><description><para>A portable metafunction to obtain a <classname alt="boost::container::basic_string">basic_string</classname> that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::basic_string</classname>&lt; CharT, Traits, <classname>polymorphic_allocator</classname>&lt; CharT &gt; &gt;</type></typedef>
  4652. </struct><typedef name="basic_string"><type><classname>boost::container::basic_string</classname>&lt; CharT, Traits, <classname>polymorphic_allocator</classname>&lt; CharT &gt; &gt;</type></typedef>
  4653. <typedef name="string"><type><classname>basic_string_of</classname>&lt; char &gt;::type</type></typedef>
  4654. <typedef name="wstring"><type><classname>basic_string_of</classname>&lt; wchar_t &gt;::type</type></typedef>
  4655. </namespace>
  4656. </namespace>
  4657. </namespace>
  4658. </header>
  4659. <header name="boost/container/throw_exception.hpp">
  4660. <namespace name="boost">
  4661. <namespace name="container">
  4662. <function name="throw_bad_alloc"><type>BOOST_NORETURN void</type><description><para>Exception callback called by Boost.Container when fails to allocate the requested storage space. <itemizedlist>
  4663. <listitem>
  4664. <para>If BOOST_NO_EXCEPTIONS is NOT defined <computeroutput>std::bad_alloc()</computeroutput> is thrown.</para>
  4665. <para/>
  4666. </listitem>
  4667. <listitem>
  4668. <para>If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS is NOT defined <computeroutput>BOOST_ASSERT(!"boost::container bad_alloc thrown")</computeroutput> is called and <computeroutput>std::abort()</computeroutput> if the former returns.</para>
  4669. <para/>
  4670. </listitem>
  4671. <listitem>
  4672. <para>If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined the user must provide an implementation and the function should not return. </para>
  4673. </listitem>
  4674. </itemizedlist>
  4675. </para></description></function>
  4676. <function name="throw_out_of_range"><type>BOOST_NORETURN void</type><parameter name="str"><paramtype>const char *</paramtype></parameter><description><para>Exception callback called by Boost.Container to signal arguments out of range. <itemizedlist>
  4677. <listitem>
  4678. <para>If BOOST_NO_EXCEPTIONS is NOT defined <computeroutput>std::out_of_range(str)</computeroutput> is thrown.</para>
  4679. <para/>
  4680. </listitem>
  4681. <listitem>
  4682. <para>If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS is NOT defined <computeroutput>BOOST_ASSERT_MSG(!"boost::container out_of_range thrown", str)</computeroutput> is called and <computeroutput>std::abort()</computeroutput> if the former returns.</para>
  4683. <para/>
  4684. </listitem>
  4685. <listitem>
  4686. <para>If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined the user must provide an implementation and the function should not return. </para>
  4687. </listitem>
  4688. </itemizedlist>
  4689. </para></description></function>
  4690. <function name="throw_length_error"><type>BOOST_NORETURN void</type><parameter name="str"><paramtype>const char *</paramtype></parameter><description><para>Exception callback called by Boost.Container to signal errors resizing. <itemizedlist>
  4691. <listitem>
  4692. <para>If BOOST_NO_EXCEPTIONS is NOT defined <computeroutput>std::length_error(str)</computeroutput> is thrown.</para>
  4693. <para/>
  4694. </listitem>
  4695. <listitem>
  4696. <para>If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS is NOT defined <computeroutput>BOOST_ASSERT_MSG(!"boost::container length_error thrown", str)</computeroutput> is called and <computeroutput>std::abort()</computeroutput> if the former returns.</para>
  4697. <para/>
  4698. </listitem>
  4699. <listitem>
  4700. <para>If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined the user must provide an implementation and the function should not return. </para>
  4701. </listitem>
  4702. </itemizedlist>
  4703. </para></description></function>
  4704. <function name="throw_logic_error"><type>BOOST_NORETURN void</type><parameter name="str"><paramtype>const char *</paramtype></parameter><description><para>Exception callback called by Boost.Container to report errors in the internal logical of the program, such as violation of logical preconditions or class invariants. <itemizedlist>
  4705. <listitem>
  4706. <para>If BOOST_NO_EXCEPTIONS is NOT defined <computeroutput>std::logic_error(str)</computeroutput> is thrown.</para>
  4707. <para/>
  4708. </listitem>
  4709. <listitem>
  4710. <para>If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS is NOT defined <computeroutput>BOOST_ASSERT_MSG(!"boost::container logic_error thrown", str)</computeroutput> is called and <computeroutput>std::abort()</computeroutput> if the former returns.</para>
  4711. <para/>
  4712. </listitem>
  4713. <listitem>
  4714. <para>If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined the user must provide an implementation and the function should not return. </para>
  4715. </listitem>
  4716. </itemizedlist>
  4717. </para></description></function>
  4718. <function name="throw_runtime_error"><type>BOOST_NORETURN void</type><parameter name="str"><paramtype>const char *</paramtype></parameter><description><para>Exception callback called by Boost.Container to report errors that can only be detected during runtime. <itemizedlist>
  4719. <listitem>
  4720. <para>If BOOST_NO_EXCEPTIONS is NOT defined <computeroutput>std::runtime_error(str)</computeroutput> is thrown.</para>
  4721. <para/>
  4722. </listitem>
  4723. <listitem>
  4724. <para>If BOOST_NO_EXCEPTIONS is defined and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS is NOT defined <computeroutput>BOOST_ASSERT_MSG(!"boost::container runtime_error thrown", str)</computeroutput> is called and <computeroutput>std::abort()</computeroutput> if the former returns.</para>
  4725. <para/>
  4726. </listitem>
  4727. <listitem>
  4728. <para>If BOOST_NO_EXCEPTIONS and BOOST_CONTAINER_USER_DEFINED_THROW_CALLBACKS are defined the user must provide an implementation and the function should not return. </para>
  4729. </listitem>
  4730. </itemizedlist>
  4731. </para></description></function>
  4732. </namespace>
  4733. </namespace>
  4734. </header>
  4735. <header name="boost/container/uses_allocator.hpp">
  4736. <namespace name="boost">
  4737. <namespace name="container">
  4738. <struct name="constructible_with_allocator_prefix"><template>
  4739. <template-type-parameter name="T"/>
  4740. </template><description><para><emphasis role="bold">Remark</emphasis>: if a specialization constructible_with_allocator_prefix&lt;X&gt;::value is true, indicates that T may be constructed with allocator_arg and T::allocator_type as its first two constructor arguments. Ideally, all constructors of T (including the copy and move constructors) should have a variant that accepts these two initial arguments.</para><para><emphasis role="bold">Requires</emphasis>: specialization constructible_with_allocator_prefix&lt;X&gt;::value is true, T must have a nested type, allocator_type and at least one constructor for which allocator_arg_t is the first parameter and allocator_type is the second parameter. If not all constructors of T can be called with these initial arguments, and if T is used in a context where a container must call such a constructor, then the program is ill-formed.</para><para><computeroutput> template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class Y { public: typedef Allocator allocator_type;</computeroutput></para><para><computeroutput> // Default constructor with and allocator-extended default constructor Y(); Y(allocator_arg_t, const allocator_type&amp; a);</computeroutput></para><para><computeroutput> // Copy constructor and allocator-extended copy constructor Y(const Y&amp; yy); Y(allocator_arg_t, const allocator_type&amp; a, const Y&amp; yy);</computeroutput></para><para><computeroutput> // Variadic constructor and allocator-extended variadic constructor template&lt;class ...Args&gt; Y(Args&amp;&amp; args...); template&lt;class ...Args&gt; Y(allocator_arg_t, const allocator_type&amp; a, BOOST_FWD_REF(Args)... args); };</computeroutput></para><para><computeroutput>// Specialize trait for class template Y template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; struct <classname alt="boost::container::constructible_with_allocator_prefix">constructible_with_allocator_prefix</classname>&lt;Y&lt;T,Allocator&gt; &gt; { static const bool value = true; };</computeroutput></para><para><computeroutput/></para><para><emphasis role="bold">Note</emphasis>: This trait is a workaround inspired by "N2554: The Scoped Allocator Model (Rev 2)" (Pablo Halpern, 2008-02-29) to backport the scoped allocator model to C++03, as in C++03 there is no mechanism to detect if a type can be constructed from arbitrary arguments. Applications aiming portability with several compilers should always define this trait.</para><para>In conforming C++11 compilers or compilers supporting SFINAE expressions (when BOOST_NO_SFINAE_EXPR is NOT defined), this trait is ignored and C++11 rules will be used to detect if a type should be constructed with suffix or prefix allocator arguments. </para></description><data-member name="value" specifiers="static"><type>const bool</type></data-member>
  4741. </struct><struct name="constructible_with_allocator_suffix"><template>
  4742. <template-type-parameter name="T"/>
  4743. </template><description><para><emphasis role="bold">Remark</emphasis>: if a specialization constructible_with_allocator_suffix&lt;X&gt;::value is true, indicates that T may be constructed with an allocator as its last constructor argument. Ideally, all constructors of T (including the copy and move constructors) should have a variant that accepts a final argument of allocator_type.</para><para><emphasis role="bold">Requires</emphasis>: if a specialization constructible_with_allocator_suffix&lt;X&gt;::value is true, T must have a nested type, allocator_type and at least one constructor for which allocator_type is the last parameter. If not all constructors of T can be called with a final allocator_type argument, and if T is used in a context where a container must call such a constructor, then the program is ill-formed.</para><para><computeroutput> template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class Z { public: typedef Allocator allocator_type;</computeroutput></para><para><computeroutput> // Default constructor with optional allocator suffix Z(const allocator_type&amp; a = allocator_type());</computeroutput></para><para><computeroutput> // Copy constructor and allocator-extended copy constructor Z(const Z&amp; zz); Z(const Z&amp; zz, const allocator_type&amp; a); };</computeroutput></para><para><computeroutput>// Specialize trait for class template Z template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; struct <classname alt="boost::container::constructible_with_allocator_suffix">constructible_with_allocator_suffix</classname>&lt;Z&lt;T,Allocator&gt; &gt; { static const bool value = true; }; </computeroutput></para><para><emphasis role="bold">Note</emphasis>: This trait is a workaround inspired by "N2554: The Scoped A Model (Rev 2)" (Pablo Halpern, 2008-02-29) to backport the scoped allocator model to C++03, as in C++03 there is no mechanism to detect if a type can be constructed from arbitrary arguments. Applications aiming portability with several compilers should always define this trait.</para><para>In conforming C++11 compilers or compilers supporting SFINAE expressions (when BOOST_NO_SFINAE_EXPR is NOT defined), this trait is ignored and C++11 rules will be used to detect if a type should be constructed with suffix or prefix allocator arguments. </para></description><data-member name="value" specifiers="static"><type>const bool</type></data-member>
  4744. </struct><struct name="uses_allocator"><template>
  4745. <template-type-parameter name="T"/>
  4746. <template-type-parameter name="Allocator"/>
  4747. </template><inherit access="public">dtl::uses_allocator_imp&lt; T, Allocator &gt;</inherit><description><para><emphasis role="bold">Remark</emphasis>: Automatically detects whether T has a nested allocator_type that is convertible from Allocator. Meets the BinaryTypeTrait requirements ([meta.rqmts] 20.4.1). A program may specialize this type to define uses_allocator&lt;X&gt;::value as true for a T of user-defined type if T does not have a nested allocator_type but is nonetheless constructible using the specified Allocator where either: the first argument of a constructor has type allocator_arg_t and the second argument has type Alloc or the last argument of a constructor has type Alloc.</para><para><emphasis role="bold">Result</emphasis>: uses_allocator&lt;T, Allocator&gt;::value== true if a type T::allocator_type exists and either is_convertible&lt;Alloc, T::allocator_type&gt;::value != false or T::allocator_type is an alias <computeroutput><classname alt="boost::container::erased_type">erased_type</classname></computeroutput>. False otherwise. </para></description></struct>
  4748. </namespace>
  4749. </namespace>
  4750. </header>
  4751. <header name="boost/container/uses_allocator_fwd.hpp">
  4752. <para>This header forward declares <classname alt="boost::container::constructible_with_allocator_prefix">boost::container::constructible_with_allocator_prefix</classname>, <classname alt="boost::container::constructible_with_allocator_suffix">boost::container::constructible_with_allocator_suffix</classname> and <classname alt="boost::container::uses_allocator">boost::container::uses_allocator</classname>. Also defines the following types: </para><namespace name="boost">
  4753. <namespace name="container">
  4754. <struct name="erased_type"><description><para>The <computeroutput><classname alt="boost::container::erased_type">erased_type</classname></computeroutput> struct is an empty struct that serves as a placeholder for a type T in situations where the actual type T is determined at runtime. For example, the nested type, <computeroutput>allocator_type</computeroutput>, is an alias for <computeroutput><classname alt="boost::container::erased_type">erased_type</classname></computeroutput> in classes that use type-erased allocators. </para></description></struct><typedef name="allocator_arg_t"><description><para>The allocator_arg_t struct is an empty structure type used as a unique type to disambiguate constructor and function overloading. Specifically, several types have constructors with allocator_arg_t as the first argument, immediately followed by an argument of a type that satisfies Allocator requirements </para></description><type>unspecified</type></typedef>
  4755. <data-member name="allocator_arg" specifiers="static"><type>allocator_arg_t</type><description><para>A instance of type allocator_arg_t </para></description></data-member>
  4756. </namespace>
  4757. </namespace>
  4758. </header>
  4759. <header name="boost/container/vector.hpp">
  4760. <namespace name="boost">
  4761. <namespace name="container">
  4762. <class name="vector"><template>
  4763. <template-type-parameter name="T"><purpose><para>The type of object that is stored in the vector </para></purpose></template-type-parameter>
  4764. <template-type-parameter name="A"><default>void</default><purpose><para>The allocator used for all internal memory management, use void for the default allocator </para></purpose></template-type-parameter>
  4765. <template-type-parameter name="Options"><default>void</default><purpose><para>A type produced from <computeroutput><classname alt="boost::container::vector_options">boost::container::vector_options</classname></computeroutput>. </para></purpose></template-type-parameter>
  4766. </template><description><para>A vector is a sequence that supports random access to elements, constant time insertion and removal of elements at the end, and linear time insertion and removal of elements at the beginning or in the middle. The number of elements in a vector may vary dynamically; memory management is automatic.</para><para>
  4767. </para></description><typedef name="value_type"><type>T</type></typedef>
  4768. <typedef name="allocator_type"><type>implementation_defined</type></typedef>
  4769. <typedef name="allocator_traits_t"><type>::<classname>boost::container::allocator_traits</classname>&lt; allocator_type &gt;</type></typedef>
  4770. <typedef name="pointer"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::pointer</type></typedef>
  4771. <typedef name="const_pointer"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::const_pointer</type></typedef>
  4772. <typedef name="reference"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::reference</type></typedef>
  4773. <typedef name="const_reference"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::const_reference</type></typedef>
  4774. <typedef name="size_type"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::size_type</type></typedef>
  4775. <typedef name="difference_type"><type><classname>allocator_traits</classname>&lt; allocator_type &gt;::difference_type</type></typedef>
  4776. <typedef name="stored_allocator_type"><type>allocator_type</type></typedef>
  4777. <typedef name="iterator"><type>implementation_defined</type></typedef>
  4778. <typedef name="const_iterator"><type>implementation_defined</type></typedef>
  4779. <typedef name="reverse_iterator"><type>implementation_defined</type></typedef>
  4780. <typedef name="const_reverse_iterator"><type>implementation_defined</type></typedef>
  4781. <method-group name="public member functions">
  4782. <method name="assign"><type>void</type><template>
  4783. <template-type-parameter name="InIt"/>
  4784. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="BOOST_CONTAINER_DOCIGN"><paramtype>InIt last </paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [first, last) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor/assignment or T's constructor/assignment from dereferencing InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  4785. <method name="assign"><type>void</type><parameter name="il"><paramtype>std::initializer_list&lt; T &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [il.begin(), il.end()) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's constructor from dereferencing iniializer_list iterator throws. </para></description></method>
  4786. <method name="assign"><type>void</type><template>
  4787. <template-type-parameter name="FwdIt"/>
  4788. </template><parameter name="first"><paramtype>FwdIt</paramtype></parameter><parameter name="BOOST_CONTAINER_DOCIGN"><paramtype>FwdIt last </paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the the range [first, last) to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor/assignment or T's constructor/assignment from dereferencing InpIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  4789. <method name="assign"><type>void</type><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="val"><paramtype>const value_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Assigns the n copies of val to *this.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor/assignment throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  4790. <method name="get_allocator" cv="const noexcept"><type>allocator_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a copy of the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: If allocator's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4791. <method name="get_stored_allocator" cv="noexcept"><type>stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  4792. <method name="get_stored_allocator" cv="const noexcept"><type>const stored_allocator_type &amp;</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the internal allocator.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  4793. <method name="begin" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the first element contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4794. <method name="begin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4795. <method name="end" cv="noexcept"><type>iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4796. <method name="end" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4797. <method name="rbegin" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the beginning of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4798. <method name="rbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4799. <method name="rend" cv="noexcept"><type>reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a reverse_iterator pointing to the end of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4800. <method name="rend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4801. <method name="cbegin" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the first element contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4802. <method name="cend" cv="const noexcept"><type>const_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4803. <method name="crbegin" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the beginning of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4804. <method name="crend" cv="const noexcept"><type>const_reverse_iterator</type><description><para><emphasis role="bold">Effects</emphasis>: Returns a const_reverse_iterator pointing to the end of the reversed vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4805. <method name="empty" cv="const noexcept"><type>bool</type><description><para><emphasis role="bold">Effects</emphasis>: Returns true if the vector contains no elements.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4806. <method name="size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the number of the elements contained in the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4807. <method name="max_size" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Returns the largest possible size of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4808. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are value initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy/move or value initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  4809. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are default initialized.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy/move or default initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  4810. <method name="resize"><type>void</type><parameter name="new_size"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts or erases elements at the end such that the size becomes n. New elements are copy constructed from x.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy/move constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the difference between size() and new_size. </para></description></method>
  4811. <method name="capacity" cv="const noexcept"><type>size_type</type><description><para><emphasis role="bold">Effects</emphasis>: Number of elements for which memory has been allocated. capacity() is always greater than or equal to size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4812. <method name="reserve"><type>void</type><parameter name="new_cap"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: If n is less than or equal to capacity(), this call has no effect. Otherwise, it is a request for allocation of additional memory. If the request is successful, then capacity() is greater than or equal to n; otherwise, capacity() is unchanged. In either case, size() is unchanged.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation allocation throws or T's copy/move constructor throws. </para></description></method>
  4813. <method name="shrink_to_fit"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Tries to deallocate the excess of memory created with previous allocations. The size of the vector is unchanged</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, or T's copy/move constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to size(). </para></description></method>
  4814. <method name="front" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4815. <method name="front" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the first element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4816. <method name="back" cv="noexcept"><type>reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4817. <method name="back" cv="const noexcept"><type>const_reference</type><description><para><emphasis role="bold">Requires</emphasis>: !empty()</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the last element of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4818. <method name="operator[]" cv="noexcept"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4819. <method name="operator[]" cv="const noexcept"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4820. <method name="nth" cv="noexcept"><type>iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns an iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  4821. <method name="nth" cv="const noexcept"><type>const_iterator</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt;= n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const_iterator to the nth element from the beginning of the container. Returns end() if n == size().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  4822. <method name="index_of" cv="noexcept"><type>size_type</type><parameter name="p"><paramtype>iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  4823. <method name="index_of" cv="const noexcept"><type>size_type</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: begin() &lt;= p &lt;= end().</para><para><emphasis role="bold">Effects</emphasis>: Returns the index of the element pointed by p and size() if p == end().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></method>
  4824. <method name="at"><type>reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4825. <method name="at" cv="const"><type>const_reference</type><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: size() &gt; n.</para><para><emphasis role="bold">Effects</emphasis>: Returns a const reference to the nth element from the beginning of the container.</para><para><emphasis role="bold">Throws</emphasis>: std::range_error if n &gt;= size()</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4826. <method name="data" cv="noexcept"><type>T *</type><description><para><emphasis role="bold">Returns</emphasis>: A pointer such that [data(),data() + size()) is a valid range. For a non-empty vector, data() == &amp;front().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4827. <method name="data" cv="const noexcept"><type>const T *</type><description><para><emphasis role="bold">Returns</emphasis>: A pointer such that [data(),data() + size()) is a valid range. For a non-empty vector, data() == &amp;front().</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4828. <method name="emplace_back"><type>reference</type><template>
  4829. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  4830. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the end of the vector.</para><para><emphasis role="bold">Returns</emphasis>: A reference to the created object.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws or T's copy/move constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  4831. <method name="stable_emplace_back"><type>bool</type><template>
  4832. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  4833. </template><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... in the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: If the in-place constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant time.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension. </para></description></method>
  4834. <method name="emplace"><type>iterator</type><template>
  4835. <template-nontype-parameter name="Args"><type>class ...</type></template-nontype-parameter>
  4836. </template><parameter name="position"><paramtype>const_iterator</paramtype></parameter><parameter name="args"><paramtype>Args &amp;&amp;...</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: position must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Inserts an object of type T constructed with std::forward&lt;Args&gt;(args)... before position</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or the in-place constructor throws or T's copy/move constructor/assignment throws.</para><para><emphasis role="bold">Complexity</emphasis>: If position is end(), amortized constant time Linear time otherwise. </para></description></method>
  4837. <method name="push_back"><type>void</type><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Inserts a copy of x at the end of the vector.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  4838. <method name="push_back"><type>void</type><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a new element in the end of the vector and moves the resources of x to this new element.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Amortized constant time. </para></description></method>
  4839. <method name="insert"><type>iterator</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: position must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of x before position.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor/assignment throws.</para><para><emphasis role="bold">Complexity</emphasis>: If position is end(), amortized constant time Linear time otherwise. </para></description></method>
  4840. <method name="insert"><type>iterator</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><parameter name="x"><paramtype>T &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: position must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a new element before position with x's resources.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws.</para><para><emphasis role="bold">Complexity</emphasis>: If position is end(), amortized constant time Linear time otherwise. </para></description></method>
  4841. <method name="insert"><type>iterator</type><parameter name="p"><paramtype>const_iterator</paramtype></parameter><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="x"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert n copies of x before pos.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or p if n is 0.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></method>
  4842. <method name="insert"><type>iterator</type><template>
  4843. <template-type-parameter name="InIt"/>
  4844. </template><parameter name="pos"><paramtype>const_iterator</paramtype></parameter><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [first, last) range before pos.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or pos if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InpIt throws or T's copy/move constructor/assignment throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to boost::container::iterator_distance [first, last). </para></description></method>
  4845. <method name="insert"><type>iterator</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Requires</emphasis>: p must be a valid iterator of *this. num, must be equal to boost::container::iterator_distance(first, last)</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [first, last) range before pos.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or pos if first == last.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws, T's constructor from a dereferenced InpIt throws or T's copy/move constructor/assignment throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to boost::container::iterator_distance [first, last).</para><para><emphasis role="bold">Note</emphasis>: This function avoids a linear operation to calculate boost::container::iterator_distance[first, last) for forward and bidirectional iterators, and a one by one insertion for input iterators. This is a a non-standard extension. <emphasis role="bold">Requires</emphasis>: position must be a valid iterator of *this.</para><para><emphasis role="bold">Effects</emphasis>: Insert a copy of the [il.begin(), il.end()) range before position.</para><para><emphasis role="bold">Returns</emphasis>: an iterator to the first inserted element or position if first == last.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></method>
  4846. <method name="pop_back" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Removes the last element from the container.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant time. </para></description></method>
  4847. <method name="erase"><type>iterator</type><parameter name="position"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the element at position pos.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements between pos and the last element. Constant if pos is the last element. </para></description></method>
  4848. <method name="erase"><type>iterator</type><parameter name="first"><paramtype>const_iterator</paramtype></parameter><parameter name="last"><paramtype>const_iterator</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Erases the elements pointed by [first, last).</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the distance between first and last plus linear to the elements between pos and the last element. </para></description></method>
  4849. <method name="swap" cv="noexcept(((allocator_traits_type::propagate_on_container_swap::value||allocator_traits_type::is_always_equal::value) &amp;&amp;!dtl::is_version&lt; allocator_type, 0 &gt;::value)))"><type>void</type><parameter name="x"><paramtype><classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Swaps the contents of *this and x.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4850. <method name="clear" cv="noexcept"><type>void</type><description><para><emphasis role="bold">Effects</emphasis>: Erases all the elements of the vector.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4851. </method-group>
  4852. <constructor cv="noexcept(dtl::is_nothrow_default_constructible&lt; allocator_type &gt;::value))"><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  4853. <constructor specifiers="explicit" cv="noexcept"><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector taking the allocator as parameter.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  4854. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector and inserts n value initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's value initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  4855. <constructor specifiers="explicit"><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector that will use a copy of allocator a and inserts n value initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's value initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  4856. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector that will use a copy of allocator a and inserts n default initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's default initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></constructor>
  4857. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name=""><paramtype><classname>default_init_t</classname></paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector that will use a copy of allocator a and inserts n default initialized values.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's default initialization throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n.</para><para><emphasis role="bold">Note</emphasis>: Non-standard extension </para></description></constructor>
  4858. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="value"><paramtype>const T &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  4859. <constructor><parameter name="n"><paramtype>size_type</paramtype></parameter><parameter name="value"><paramtype>const T &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector that will use a copy of allocator a and inserts n copies of value.</para><para><emphasis role="bold">Throws</emphasis>: If allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to n. </para></description></constructor>
  4860. <constructor><template>
  4861. <template-type-parameter name="InIt"/>
  4862. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="BOOST_CONTAINER_DOCIGN"><paramtype>InIt last </paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector and inserts a copy of the range [first, last) in the vector.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  4863. <constructor><template>
  4864. <template-type-parameter name="InIt"/>
  4865. </template><parameter name="first"><paramtype>InIt</paramtype></parameter><parameter name="last"><paramtype>InIt</paramtype></parameter><parameter name="BOOST_CONTAINER_DOCIGN"><paramtype>const allocator_type &amp;a </paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector that will use a copy of allocator a and inserts a copy of the range [first, last) in the vector.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's constructor taking a dereferenced InIt throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [first, last). </para></description></constructor>
  4866. <constructor><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a vector.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_type's allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  4867. <constructor cv="noexcept"><parameter name="x"><paramtype><classname>vector</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor. Moves x's resources to *this.</para><para><emphasis role="bold">Throws</emphasis>: Nothing</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></constructor>
  4868. <constructor><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype><default>allocator_type()</default></parameter><description><para><emphasis role="bold">Effects</emphasis>: Constructs a vector that will use a copy of allocator a and inserts a copy of the range [il.begin(), il.last()) in the vector</para><para><emphasis role="bold">Throws</emphasis>: If T's constructor taking a dereferenced initializer_list iterator throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></constructor>
  4869. <constructor><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><purpose>defined(BOOST_CONTAINER_DOXYGEN_INVOKED) </purpose><description><para><emphasis role="bold">Effects</emphasis>: Copy constructs a vector using the specified allocator.</para><para><emphasis role="bold">Postcondition</emphasis>: x == *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation throws or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the elements x contains. </para></description></constructor>
  4870. <constructor><parameter name="x"><paramtype><classname>vector</classname> &amp;&amp;</paramtype></parameter><parameter name="a"><paramtype>const allocator_type &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move constructor using the specified allocator. Moves x's resources to *this if a == allocator_type(). Otherwise copies values from x to *this.</para><para><emphasis role="bold">Throws</emphasis>: If allocation or T's copy constructor throws.</para><para><emphasis role="bold">Complexity</emphasis>: Constant if a == x.get_allocator(), linear otherwise. </para></description></constructor>
  4871. <destructor><description><para><emphasis role="bold">Effects</emphasis>: Destroys the vector. All stored values are destroyed and used memory is deallocated.</para><para><emphasis role="bold">Throws</emphasis>: Nothing.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements. </para></description></destructor>
  4872. <copy-assignment><type><classname>vector</classname> &amp;</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Makes *this contain the same elements as x.</para><para><emphasis role="bold">Postcondition</emphasis>: this-&gt;size() == x.size(). *this contains a copy of each of x's elements.</para><para><emphasis role="bold">Throws</emphasis>: If memory allocation throws or T's copy/move constructor/assignment throws.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in x. </para></description></copy-assignment>
  4873. <copy-assignment><type><classname>vector</classname> &amp;</type><parameter name="il"><paramtype>std::initializer_list&lt; value_type &gt;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Make *this container contains elements from il.</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the range [il.begin(), il.end()). </para></description></copy-assignment>
  4874. <copy-assignment cv="noexcept(allocator_traits_type::propagate_on_container_move_assignment::value||allocator_traits_type::is_always_equal::value))"><type><classname>vector</classname> &amp;</type><parameter name="x"><paramtype><classname>vector</classname> &amp;&amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Move assignment. All x's values are transferred to *this.</para><para><emphasis role="bold">Postcondition</emphasis>: x.empty(). *this contains a the elements x had before the function.</para><para><emphasis role="bold">Throws</emphasis>: If allocator_traits_type::propagate_on_container_move_assignment is false and (allocation throws or value_type's move constructor throws)</para><para><emphasis role="bold">Complexity</emphasis>: Constant if allocator_traits_type:: propagate_on_container_move_assignment is true or this-&gt;get&gt;allocator() == x.get_allocator(). Linear otherwise. </para></description></copy-assignment>
  4875. <method-group name="friend functions">
  4876. <method name="operator=="><type>friend bool</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are equal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4877. <method name="operator!="><type>friend bool</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x and y are unequal</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4878. <method name="operator&lt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4879. <method name="operator&gt;"><type>friend bool</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4880. <method name="operator&lt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or less than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4881. <method name="operator&gt;="><type>friend bool</type><parameter name="x"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype>const <classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: Returns true if x is equal or greater than y</para><para><emphasis role="bold">Complexity</emphasis>: Linear to the number of elements in the container. </para></description></method>
  4882. <method name="swap"><type>friend void</type><parameter name="x"><paramtype><classname>vector</classname> &amp;</paramtype></parameter><parameter name="y"><paramtype><classname>vector</classname> &amp;</paramtype></parameter><description><para><emphasis role="bold">Effects</emphasis>: x.swap(y)</para><para><emphasis role="bold">Complexity</emphasis>: Constant. </para></description></method>
  4883. </method-group>
  4884. </class><function name="vector"><type/><template>
  4885. <template-type-parameter name="InputIterator"/>
  4886. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter></function>
  4887. <function name="vector"><type/><template>
  4888. <template-type-parameter name="InputIterator"/>
  4889. <template-type-parameter name="Allocator"/>
  4890. </template><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>InputIterator</paramtype></parameter><parameter name=""><paramtype>Allocator const &amp;</paramtype></parameter></function>
  4891. </namespace>
  4892. </namespace>
  4893. </header>
  4894. <header name="boost/container/pmr/vector.hpp">
  4895. <namespace name="boost">
  4896. <namespace name="container">
  4897. <namespace name="pmr">
  4898. <struct name="vector_of"><template>
  4899. <template-type-parameter name="T"/>
  4900. </template><description><para>A portable metafunction to obtain a vector that uses a polymorphic allocator </para></description><typedef name="type"><type><classname>boost::container::vector</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  4901. </struct><typedef name="vector"><type><classname>boost::container::vector</classname>&lt; T, <classname>polymorphic_allocator</classname>&lt; T &gt; &gt;</type></typedef>
  4902. </namespace>
  4903. </namespace>
  4904. </namespace>
  4905. </header>
  4906. </library-reference>