STL c ++: viskas, ką reikia žinoti



Šis straipsnis suteiks jums išsamių ir išsamių žinių apie STL C ++ versijoje ir suteiks jums idėją apie skirtingus konteinerius.

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.

Container-STL-in-C++

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:

  1. Nustatyti
  2. Multiset
  3. Žemėlapis
  4. 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.