STL c ++ keeles: kõik, mida peate teadma

See artikkel annab teile üksikasjalikud ja kõikehõlmavad teadmised STL-i kohta C ++ versioonis ja annavad teile ülevaate ka erinevate konteinerite kohta.

Standardmallide kogu (STL) on komplekt C ++ malliklassidest, et pakkuda ühiseid programmeerimisandmete struktuure ja funktsioone, nagu loendid, korstnad, massiivid jne. Selles ST + C-i artiklis käsitleme järgmisi näpunäiteid:



Selle artikliga edasi liikumine STL-is C ++ -s



C ++ mallid

C ++ pakub meile mallide funktsiooni, mis võimaldab funktsioonidel ja klassidel töötada üldiste tüüpidega. See võimaldab funktsiooni või klassi taaskasutatavust ja võimaldab tal töötada paljude erinevate andmetüüpidega, ilma et neid igaühe jaoks uuesti kirjutataks.

Selle artikliga edasi liikumine STL-is C ++ -s



Üldised funktsioonid ja STL

Mitmel korral programmeerides on vaja luua funktsioone, mis täidaksid samu toiminguid, kuid töötaksid erinevate andmetüüpidega. Nii et selle probleemi lahendamiseks pakub C ++ funktsiooni ühe üldfunktsiooni loomiseks paljude funktsioonide asemel, mis võivad malli parameetri abil töötada erinevat tüüpi andmetega. Nende klasside ja funktsioonide kogu nimetatakse standardmallide raamatukoguks (STL)

STL-i komponendid, mis on nüüd osa tavalisest C ++ teegist, on määratletud nimeruumis std. Seetõttu peame nende oma programmi importimiseks kasutama nimeruumi kasutamist.

Süntaks:



Nimeruumi std kasutamine

STL-l on kolm komponenti

  • Konteinerid

  • Algoritmid

  • Iteraatorid

Need kolm komponenti toimivad üksteisega sünergias, pakkudes tuge mitmesugustele programmeerimislahendustele. Konteineritesse salvestatud toimingute tegemiseks kasutab algoritm iteraatoreid.

Konteiner on objekt, mis salvestab andmeid mällu organiseeritud viisil. STL-is olevaid konteinereid rakendatakse malliklasside abil ja seetõttu saab neid hõlpsasti muuta ja kohandada erinevat tüüpi andmete hoidmiseks.

Protseduur, mida kasutatakse konteinerites sisalduvate andmete töötlemisel, on määratletud kui algoritm. STL sisaldab palju erinevaid algoritme, mis pakuvad tuge sellistele ülesannetele nagu initsialiseerimine, otsimine, kopeerimine, sortimine ja ühendamine, kopeerimine, sortimine ja ühendamine. Algoritme rakendatakse malli funktsioonide abil.

Kordaja saab määratleda objektina, mis osutab konteineris olevale elemendile. Iteraate saab kasutada konteinerite sisu liikumiseks. Iteraatoritega käitutakse täpselt nagu näpunäidetega. Me võime neid suurendada või vähendada. Iteraatorid ühendavad algoritmi konteineritega ja mängivad võtmerolli konteineritesse salvestatud andmete manipuleerimisel.

Container-STL-in-C++

Selle artikliga edasi liikumine STL-is C ++ -s

Konteinerid

STL määratleb kümme konteinerit, mis on rühmitatud kolme kategooriasse.

Konteinerid

Kirjeldus

Päisefail

Iteraator

Vektor

Seda saab määratleda dünaamilise massiivina. See võimaldab otsest juurdepääsu mis tahes elemendile.

Juhuslik juurdepääs

Nimekiri

See on kahesuunaline lineaarne loend. See võimaldab sisestamist ja kustutamist kõikjal

Kahesuunaline

ja

See on kahe otsaga järjekord. Võimaldab sisestada ja kustutada mõlemast otsast. Lubab otsese juurdepääsu mis tahes elemendile.

Juhuslik juurdepääs

seatud

See on seotud konteiner ainulaadsete komplektide hoidmiseks. Võimaldab kiiret otsimist.

Kahesuunaline

multiset

See on assotsiatsioonikonteiner unikaalsete komplektide hoidmiseks.

Kahesuunaline

kaart

See on assotsieerunud konteiner ainulaadsete võtme / väärtuse paaride salvestamiseks. Iga võti on seotud ainult ühe väärtusega.

Kahesuunaline

multikaart

See on seotud konteiner võtme / väärtuse salvestamiseks, milles üks võti võib olla seotud rohkem kui ühe väärtusega (kaardistamine üks-mitmele). See võimaldab võtmepõhist otsingut.

Kahesuunaline

virn

Tavaline virn järgib viimast-esimesena-välja (LIFO)

Kordajat pole

järjekorda

Esimene järjekord järgneb esimesele-esimesele-välja (FIFO)

Kordajat pole

prioriteet-järjekord

Esimene element väljas on alati kõrgeima prioriteediga element

Kordajat pole

Järjekonteinerid

Järjestuskonteinerid salvestavad elemente lineaarses järjekorras. Kõik elemendid on üksteisega seotud nende asukoha järgi mööda joont. Need võimaldavad elemendi sisestamist ja kõik need toetavad mitut toimingut.

STL pakub kolme tüüpi jadaelemente:

  • Vektor
  • Nimekiri
  • ja

Assotsiatiivsed konteinerid:

Need on loodud nii, et need saaksid klahvide abil toetada otsest juurdepääsu elementidele. Need ei ole järjestikused. Neid on nelja tüüpi

assotsiatiivsed konteinerid:

  1. Määra
  2. Multiset
  3. Kaart
  4. Mitmekaart

Kõik ülaltoodud konteinerid salvestavad andmeid struktuuris, mida nimetatakse puuks, mis hõlbustab kiiresti

otsimine, kustutamine ja sisestamine erinevalt järjestikustest. Konteinerikomplekt või multiset võib salvestada mitmesuguseid üksusi ja pakkuda toiminguid nende manipuleerimiseks, kasutades võtmetena väärtusi.

Ja kaarti või Multimapi kasutatakse üksuste salvestamiseks paarikaupa, üks nimega võti ja teine

nimetatakse väärtuseks.

Tuletatud mahutid:

STL pakub kolme tuletatud konteinerit, nimelt virna, järjekorda ja prioriteedi järjekorda. Neid nimetatakse ka konteineradapteriteks.

c ++ sorteeri massiivi

Tuletatud mahuteid on kolme tüüpi:

1. Virn

2. Järjekord

3. Prioriteedi_kord

Virnaid, järjekorda ja prioriteetset järjekorda saab hõlpsasti luua erinevatest järjestuskonteineritest. Tuletatud konteinerid ei toeta iteraatoreid ja seetõttu ei saa me neid andmetega manipuleerimiseks kasutada. Kuid nad toetavad kustutamise ja sisestamise toimingute rakendamiseks kahte liikme funktsiooni pop () ja push ().

Selle artikliga edasi liikumine STL-is C ++ -s

Algoritmid

Algoritmid on funktsioonid, mida saab nende sisu töötlemiseks kasutada üldiselt erinevates konteinerites. Kuigi iga konteiner pakub oma põhitoimingutele funktsioone, pakub STL laiendatud või keerukamate toimingute toetamiseks enam kui kuuskümmend standardset algoritmi. Standardsed algoritmid võimaldavad meil töötada samaaegselt ka kahte erinevat tüüpi konteineritega.

STL-algoritmid tugevdavad taaskasutatavuse filosoofiat. Neid algoritme kasutades saavad programmeerijad säästa palju aega ja vaeva. STL-algoritmidele juurdepääsu saamiseks peame oma programmi kaasama.

STL-algoritmi võib nende tehtavate toimingute iseloomu põhjal liigitada järgmisse:

  • Mittmutavad algoritmid

  • Muteerivad algoritmid

  • Algoritmide sorteerimine

  • Määra algoritmid

  • Relatsioonalgoritm

Selle artikliga edasi liikumine STL-is C ++ -s

Iteraatorid:

Iteraatorid toimivad nagu osutid ja neid kasutatakse konteineri elementidele juurde pääsemiseks. Konteinerite sisu liikumiseks kasutame iteraatoreid. Iteraatoritega käitutakse täpselt nagu näpunäidetega. Saame neid vastavalt meie nõuetele suurendada või vähendada. Iteraatorid ühendavad konteinereid algoritmidega ja mängivad olulist rolli konteineritesse salvestatud andmete manipuleerimisel. Neid kasutatakse sageli ühest elemendist teise läbimiseks, seda protsessi nimetatakse konteineri kaudu iteratsiooniks.

Kordajaid on viit tüüpi:

1. Sisend

2. Väljund

3. Edasi

4. Kahesuunaline

5. Juhuslik

Iteraator

Juurdepääsumeetod

Liikumissuund

I / O-võime

Märkus

Sisend

Lineaarne

Ainult edasi

Loe ainult

Ei saa salvestada

Väljund

Lineaarne

Ainult edasi

Ainult kirjutada

Ei saa salvestada

Edasi

Lineaarne

Ainult edasi

Lugema kirjutama

Saab salvestada

Kahesuunaline

Lineaarne

Edasi ja tagasi

Lugema kirjutama

Saab salvestada

Juhuslik

Juhuslik

Edasi ja tagasi

Lugema kirjutama

Saab salvestada

Erinevat tüüpi konteineritega tuleb kasutada erinevat tüüpi iteraatoreid, nii et ainult

järjestustel ja assotsiatiivsetel konteineritel on lubatud iteraatorite kaudu liikuda. Igat tüüpi iteraatoreid kasutatakse teatud funktsioonide täitmiseks. Sisendi ja väljundi iteraatorid toetavad kõige vähem funktsioone. Neid saab kasutada ainult konteineris läbimiseks. Edasised iteraatorid toetavad kõiki sisendi ja väljundi iteraatorite toiminguid ning säilitavad ka oma positsiooni konteineris. Kahesuunaline iteraator toetab küll kõiki ettepoole suunatud iteraatorite toiminguid, kuid annab võimaluse konteineris liikuda tahapoole.

Seega oleme jõudnud selle artikli lõpuni, mis käsitleb teemat „STL C ++ keeles”. Kui soovite rohkem teada saada, vaadake järgmist autor Edureka, usaldusväärne veebipõhine õppefirma. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java põhiliste kui ka edasijõudnute kontseptsioonide jaoks koos erinevate Java-raamistikega nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle blogi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.