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.
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:
- Määra
- Multiset
- Kaart
- 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.