Standartinė šablonų biblioteka (STL) yra C ++ šablonų klasių rinkinys, skirtas pateikti bendras programavimo duomenų struktūras ir funkcijas, tokias kaip sąrašai, rietuvės, masyvai ir kt. Šiame STL C ++ straipsnyje aptarsime šiuos patarimus:
Toliau einant su šiuo straipsniu apie STL C ++
C ++ šablonai
„C ++“ suteikia mums šablonų funkciją, leidžiančią funkcijoms ir klasėms veikti su bendrais tipais. Tai leidžia pakartotinai naudoti funkciją ar klasę ir leidžia dirbti su daugeliu skirtingų duomenų tipų, neperrašant kiekvieno iš jų.
Toliau einant su šiuo straipsniu apie STL C ++
Bendrosios funkcijos ir STL
Programuojant daug kartų, reikia sukurti funkcijas, atliekančias tas pačias operacijas, bet veikiančias su skirtingais duomenų tipais. Taigi, norint įveikti šią problemą, „C ++“ suteikia galimybę sukurti vieną bendrą funkciją vietoj daugelio funkcijų, kurios gali dirbti su skirtingais duomenų tipais naudojant šablono parametrą. Šių bendrųjų klasių ir funkcijų rinkinys vadinamas „Standard Template Library“ (STL)
STL komponentai, kurie dabar yra standartinės C ++ bibliotekos dalis, yra apibrėžti vardų standarte. Todėl, norėdami juos importuoti į savo programą, turime naudoti vardų srities direktyvą.
Sintaksė:
Naudojant vardų sritį standartinė
STL turi tris komponentus
Konteineriai
Algoritmai
Iteratoriai
Šie trys komponentai sąveikauja tarpusavyje ir teikia paramą įvairiems programavimo sprendimams. Algoritme talpyklose laikomoms operacijoms atlikti naudojami iteratoriai.
Konteineris yra objektas, saugantis duomenis atmintyje organizuotai. STL talpyklos yra įgyvendinamos pagal šablonų klases, todėl jas galima lengvai modifikuoti ir pritaikyti, kad būtų galima laikyti įvairių tipų duomenis.
Procedūra, naudojama apdorojant konteineriuose esančius duomenis, apibrėžiama kaip algoritmas. STL apima daug įvairių algoritmų, kurie teikia paramą tokioms užduotims kaip inicijavimas, paieška, kopijavimas, rūšiavimas ir sujungimas, kopijavimas, rūšiavimas ir sujungimas. Algoritmai įgyvendinami šablonų funkcijomis.
Iteratorių galima apibrėžti kaip objektą, nukreipiantį į elementą konteineryje. Iteratoriai gali būti naudojami konteinerių turiniui judėti. Su iteratoriais elgiamasi kaip su rodyklėmis. Mes galime juos didinti arba mažinti. Iteratoriai sujungia algoritmą su konteineriais ir vaidina pagrindinį vaidmenį tvarkant konteineriuose saugomus duomenis.
Toliau einant su šiuo straipsniu apie STL C ++
Konteineriai
STL apibrėžia dešimt konteinerių, kurie sugrupuoti į tris kategorijas.
Konteineriai | apibūdinimas | Antraštės failas | Iteratorius |
Vektorius | Tai galima apibrėžti kaip dinaminį masyvą. Tai leidžia tiesiogiai pasiekti bet kurį elementą. | Atsitiktinė prieiga | |
Sąrašas | Tai yra dvikryptis tiesinis sąrašas. Tai leidžia įterpti ir ištrinti bet kur | Dvikryptis | |
ir | Tai dviguba eilė. Leidžia įterpti ir ištrinti abu galus. Leidžia tiesiogiai pasiekti bet kurį elementą. | Atsitiktinė prieiga | |
rinkinys | Tai asocijuotas konteineris unikaliems rinkiniams laikyti. Leidžia greitai ieškoti. | Dvikryptis | |
multiset | Tai asocijuotas konteineris, skirtas ne unikaliems rinkiniams laikyti. | Dvikryptis | |
žemėlapis | Tai yra susietas konteineris, skirtas saugoti unikalias raktų / reikšmių poras. Kiekvienas raktas susietas tik su viena reikšme. | Dvikryptis | |
multimap | Tai yra susietas talpykla raktui / vertei saugoti, kuriame vienas raktas gali būti susietas su daugiau nei viena verte (susiejimas „vienas prie daugelio“). Tai leidžia ieškoti pagal raktus. | Dvikryptis | |
kamino | Standartinis kaminas seka „paskutinis į pirmąjį“ (LIFO) | Nėra iteratoriaus | |
eilė | Standartinė eilė seka „pirmas į pirmą“ (FIFO) | Nėra iteratoriaus | |
prioritetas-eilė | Pirmasis elementas lauke visada yra aukščiausio prioriteto elementas sujungta ir nesusijusi transformacija informatikoje | Nėra iteratoriaus |
Sekos konteineriai
Sekos konteineriuose elementai kaupiami linijine tvarka. Visi elementai yra tarpusavyje susiję pagal jų padėtį išilgai linijos. Jie leidžia įterpti elementą ir visi jie palaiko kelias jų operacijas.
STL pateikia trijų tipų sekos elementus:
- Vektorius
- Sąrašas
- ir
Asociaciniai konteineriai:
Jie suprojektuoti taip, kad galėtų palaikyti tiesioginę prieigą prie elementų naudojant raktus. Jie nėra nuoseklūs. Yra keturi tipai
asociaciniai konteineriai:
- Nustatyti
- Multiset
- Žemėlapis
- Multimap
Visuose aukščiau esančiuose konteineriuose duomenys saugomi struktūroje, vadinamoje medžiu, kuri palengvina greitį
ieškojimas, ištrynimas ir įterpimas, skirtingai nei nuoseklus. Konteinerių rinkinyje arba daugialypėje dėžutėje gali būti saugomi įvairūs elementai ir pateikiamos manipuliavimo jais operacijos, naudojant reikšmes kaip raktus.
Žemėlapis arba „Multimap“ naudojami daiktams laikyti poromis, vienas vadinamas klavišu ir kitas
vadinama verte.
Išvestiniai konteineriai:
STL pateikia tris išvestinius konteinerius, būtent, kaminą, eilę ir prioriteto eilę. Jie taip pat žinomi kaip konteinerių adapteriai.
Yra trys išvestinių talpyklų tipai:
1. Sukrauti
2. Eilė
3. Prioriteto_ eilė
Krovinius, eilę ir prioritetinę eilę galima lengvai sukurti iš skirtingų sekų konteinerių. Išvestiniai konteineriai nepalaiko iteratorių, todėl negalime jų naudoti manipuliuodami duomenimis. Tačiau jie palaiko dviejų narių funkciją „pop“ („pop“) ir „push“ (), kad įgyvendintų ištrynimo ir įterpimo operacijas.
Toliau einant su šiuo straipsniu apie STL C ++
Algoritmai
Algoritmai yra funkcijos, kurias paprastai galima naudoti įvairiuose konteineriuose jų turiniui apdoroti. Nors kiekviename talpykloje yra pagrindinių operacijų funkcijos, STL pateikia daugiau nei šešiasdešimt standartinių algoritmų, palaikančių išplėstines ar sudėtingesnes operacijas. Standartiniai algoritmai taip pat leidžia mums vienu metu dirbti su dviejų skirtingų tipų konteineriais.
STL algoritmai sustiprina daugkartinio naudojimo filosofiją. Naudodami šiuos algoritmus, programuotojai gali sutaupyti daug laiko ir pastangų. Norėdami turėti prieigą prie STL algoritmų, turime įtraukti į savo programą.
STL algoritmas, atsižvelgiant į jų atliekamų operacijų pobūdį, gali būti skirstomas į:
Nemutuojantys algoritmai
palaiko santykius java
Keičiantys algoritmai
Rūšiavimo algoritmai
Nustatyti algoritmus
Santykinis algoritmas
Toliau einant su šiuo straipsniu apie STL C ++
Iteratoriai:
Iteratoriai veikia kaip rodyklės ir naudojami norint pasiekti konteinerio elementus. Mes naudojame iteratorius, kad galėtume judėti per konteinerių turinį. Su iteratoriais elgiamasi kaip su rodyklėmis. Mes galime juos didinti arba mažinti pagal savo reikalavimus. Iteratoriai sujungia konteinerius su algoritmais ir vaidina svarbų vaidmenį manipuliuojant konteineriuose saugomais duomenimis. Jie dažnai naudojami pereinant iš vieno elemento į kitą, šis procesas vadinamas iteracija per konteinerį.
Yra penki iteratorių tipai:
1. Įvestis
2. Išvestis
3. Pirmyn
4. Dvikryptis
5. Atsitiktinis
Iteratorius | Prieigos būdas | Judėjimo kryptis | I / O galimybė | Pastaba |
Įvestis | Linijinis | Tik pirmyn | Tik skaitymui | Negalima išsaugoti |
Rezultatas | Linijinis | Tik pirmyn | Tik rašyti | Negalima išsaugoti |
Persiųsti | Linijinis | Tik pirmyn | Skaityk rašyk | Galima išsaugoti |
Dvikryptis | Linijinis | Pirmyn ir atgal | Skaityk rašyk | Galima išsaugoti |
Atsitiktinis | Atsitiktinis | Pirmyn ir atgal | Skaityk rašyk | Galima išsaugoti |
Su skirtingų tipų konteineriais turi būti naudojami skirtingi iteratorių tipai
sekos ir asociatyviems konteineriams leidžiama keliauti per iteratorius. Kiekvienas iteratorių tipas naudojamas tam tikroms funkcijoms atlikti. Įvesties ir išvesties iteratoriai palaiko mažiausiai funkcijų. Jie gali būti naudojami tik norint praeiti pro konteinerį. Išankstiniai iteratoriai palaiko visas įvesties ir išvesties iteratorių operacijas, taip pat išlaiko savo vietą konteineryje. Dvikryptis iteratorius, palaikydamas visas pirmyn vykstančių iteratorių operacijas, suteikia galimybę konteineryje judėti atgal.
Taigi mes baigėme šį straipsnį apie „STL C ++“. Jei norite sužinoti daugiau, patikrinkite autorius - patikima internetinė mokymosi įmonė „Edureka“. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai skirti mokyti jus tiek pagrindinėms, tiek pažangesnėms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.
Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje, ir mes kuo greičiau susisieksime su jumis.