Tavallinen mallikirjasto (STL) on joukko C ++ -malliluokkia, jotka tarjoavat yleisiä ohjelmointitietorakenteita ja toimintoja, kuten luetteloita, pinoja, taulukoita jne. Tässä C ++ -artikkelissa käsitellään seuraavia viitteitä:
Siirrytään tähän artikkeliin STL: stä C ++: ssa
C ++ -mallit
C ++ tarjoaa meille mallineiden ominaisuuden, jonka avulla toiminnot ja luokat voivat toimia yleisten tyyppien kanssa. Tämä sallii funktion tai luokan uudelleenkäytettävyyden ja antaa sen työskennellä monien erilaisten tietotyyppien kanssa kirjoittamatta niitä uudelleen kullekin.
Siirrytään tähän artikkeliin STL: stä C ++: ssa
Yleiset toiminnot ja STL
Ohjelmoinnin aikana monta kertaa on tarpeen luoda toimintoja, jotka suorittavat samat toiminnot mutta toimivat eri tietotyyppien kanssa. Joten tämän ongelman voittamiseksi C ++ tarjoaa ominaisuuden luoda yksi yleinen toiminto monien toimintojen sijaan, jotka voivat toimia eri tietotyyppien kanssa malliparametrin avulla. Näiden ryhmäluokkien ja toimintojen kokoelmaa kutsutaan nimellä Standard Template Library (STL)
STL: n komponentit, jotka ovat nyt osa C ++ - standardikirjastoa, on määritelty nimitilan vakiona. Siksi meidän on käytettävä nimitiladirektiiviä tuodaksemme ne ohjelmaamme.
Syntaksi:
Käyttämällä nimiavaruuden vakiota
STL: ssä on kolme komponenttia
Kontit
Algoritmit
java on vs on
Iteraattorit
Nämä kolme komponenttia toimivat yhdessä toistensa kanssa synergiassa tarjotakseen tukea erilaisille ohjelmointiratkaisuille. Algoritmi käyttää iteraattoreita kontteihin tallennettujen toimintojen suorittamiseen.
Säilö on esine, joka tallentaa tiedot muistiin organisoidusti. STL: n säiliöt toteutetaan malliluokkien avulla, ja siksi niitä voidaan helposti muokata ja mukauttaa erityyppisten tietojen säilyttämiseen.
Toiminto, jota käytetään säilöissä olevien tietojen käsittelemiseen, määritellään algoritmiksi. STL sisältää monia erilaisia algoritmeja tukemaan tehtäviä, kuten alustaminen, haku, kopiointi, lajittelu ja yhdistäminen, kopiointi, lajittelu ja yhdistäminen. Algoritmit toteutetaan mallitoiminnoilla.
Iteraattori voidaan määritellä objektiksi, joka osoittaa säiliön elementtiin. Iteraattoreita voidaan käyttää astioiden sisällön siirtämiseen. Iteraattoreita käsitellään aivan kuten osoittimia. Voimme lisätä tai vähentää niitä. Iteraattorit yhdistävät algoritmin kontteihin ja ovat avainasemassa kontteihin tallennettujen tietojen käsittelyssä.
Siirrytään tähän artikkeliin STL: stä C ++: ssa
Kontit
STL määrittelee kymmenen konttia, jotka on ryhmitelty kolmeen luokkaan.
Kontit | Kuvaus | Otsikkotiedosto | Iteraattori |
Vektori | Se voidaan määritellä dynaamiseksi taulukoksi. Se sallii suoran pääsyn mihin tahansa elementtiin. | Satunnainen käyttö | |
Lista | Se on kaksisuuntainen lineaarinen luettelo. Se mahdollistaa lisäyksen ja poistamisen missä tahansa | Kaksisuuntainen | |
ja | Se on kaksipäinen jono. Sallii lisäykset ja poistot molemmista päistä. Sallii suoran pääsyn mihin tahansa elementtiin. | Satunnainen käyttö | |
aseta | Se on liitännäissäilö ainutlaatuisten sarjojen tallentamiseen. Mahdollistaa nopean haun. | Kaksisuuntainen | |
multiset | Se on liitännäissäilö ei-ainutlaatuisten sarjojen tallentamiseen. | Kaksisuuntainen | |
kartta | Se on liitetty säilö ainutlaatuisten avain / arvo-parien tallentamiseen. Kukin avain liittyy vain yhteen arvoon. | Kaksisuuntainen | |
monikartta | Se on liitetty säilö avaimen / arvon tallentamiseksi, jossa yksi avain voidaan liittää useampaan kuin yhteen arvoon (yksi-moniin-kartoitus). Se mahdollistaa avainpohjaisen haun. | Kaksisuuntainen | |
pino | Tavallinen pino seuraa viimeistä sisään-ulos-lähtöä (LIFO) | Ei iteraattoria | |
jonottaa | Tavallinen jono seuraa ensimmäistä sisään-ulos-lähtöä (FIFO) | Ei iteraattoria | |
prioriteettijono | Ensimmäinen elementti on aina tärkein prioriteettielementti | Ei iteraattoria |
Sekvenssisäiliöt
Sekvenssisäiliöt tallentavat elementit lineaarisessa järjestyksessä. Kaikki elementit liittyvät toisiinsa niiden sijainnilla viivaa pitkin. Ne mahdollistavat elementin lisäämisen ja kaikki ne tukevat useita toimintoja niillä.
STL tarjoaa kolmen tyyppisiä sekvenssielementtejä:
- Vektori
- Lista
- ja
Liitännäiskontit:
Ne on suunniteltu siten, että ne voivat tukea suoraa pääsyä elementteihin näppäimillä. Ne eivät ole peräkkäisiä. Niitä on neljää tyyppiä
assosiatiiviset säiliöt:
- Aseta
- Multiset
- Kartta
- Monikartta
Kaikki yllä olevat säiliöt tallentavat tietoja puuhun, joka on nopeaa
haku, poisto ja lisäys toisin kuin peräkkäinen. Säiliösarja tai multiset voivat tallentaa useita kohteita ja tarjota toimintoja niiden manipuloimiseksi käyttämällä arvoja avaimina.
Ja karttaa tai Multimapia käytetään kohteiden tallentamiseen pareittain, joista toinen on avain ja toinen
kutsutaan arvoksi.
Johdetut astiat:
STL tarjoaa kolme johdettua säilöä, nimittäin pino, jono ja prioriteettimerkki. Nämä tunnetaan myös konttisovittimina.
Johdettuja säiliöitä on kolme tyyppiä:
1. pino
2. jono
3. prioriteetti_jono
Pinot, jono ja prioriteettijono voidaan helposti luoda eri sekvenssisäiliöistä. Johdetut säilöt eivät tue iteraattoreita, joten emme voi käyttää niitä tietojen käsittelyyn. Ne kuitenkin tukevat kahden jäsenen toimintojen pop () ja push () poistamis- ja lisäystoimintojen toteuttamista.
Siirrytään tähän artikkeliin STL: stä C ++: ssa
Algoritmit
Algoritmit ovat toimintoja, joita voidaan käyttää yleensä useissa säiliöissä niiden sisällön käsittelemiseksi. Vaikka jokainen kontti tarjoaa toiminnot perustoiminnoilleen, STL tarjoaa yli 60 standardialgoritmia laajempien tai monimutkaisempien toimintojen tukemiseksi. Tavalliset algoritmit antavat meille myös mahdollisuuden työskennellä kahden erityyppisen säiliön kanssa samanaikaisesti.
STL-algoritmit vahvistavat uudelleenkäytettävyyden filosofiaa. Käyttämällä näitä algoritmeja ohjelmoijat voivat säästää paljon aikaa ja vaivaa. Jotta pääsisimme käyttämään STL-algoritmeja, meidän on sisällytettävä ohjelmaamme.
STL-algoritmi voidaan luokitella suoritettavien toimintojen luonteen perusteella seuraavasti:
Ei-mutatiiviset algoritmit
Mutatoivat algoritmit
Algoritmien lajittelu
Aseta algoritmit
Suhteellinen algoritmi
Siirrytään tähän artikkeliin STL: stä C ++: ssa
Iteraattorit:
Iteraattorit toimivat kuin osoittimet ja niitä käytetään pääsemään kontin osiin. Käytämme iteraattoreita astioiden sisällön selaamiseen. Iteraattoreita käsitellään aivan kuten osoittimia. Voimme lisätä tai vähentää niitä vaatimuksemme mukaan. Iteraattorit yhdistävät kontit algoritmeilla ja niillä on tärkeä rooli kontteihin tallennettujen tietojen käsittelyssä. Niitä käytetään usein kulkemaan elementistä toiseen, tätä prosessia kutsutaan iteroinniksi säiliön läpi.
Iteraattoreita on viisi:
1. syöttö
2. tuotos
3. eteenpäin
4. kaksisuuntainen
5. satunnainen
Iteraattori | Käyttömenetelmä | Liikkeen suunta | I / O-ominaisuus | Huomautus |
Tulo | Lineaarinen | Vain eteenpäin | Lue ainoastaan | Ei voida tallentaa |
Tuotos | Lineaarinen | Vain eteenpäin | Vain kirjoitus | Ei voida tallentaa |
Eteenpäin | Lineaarinen | Vain eteenpäin | Lukea kirjoittaa | Voidaan tallentaa |
Kaksisuuntainen | Lineaarinen | Eteen ja taaksepäin | Lukea kirjoittaa | Voidaan tallentaa |
Satunnainen | Satunnainen | Eteen ja taaksepäin | Lukea kirjoittaa ruby on rails -sivusto-opetusohjelma | Voidaan tallentaa |
Eri tyyppisiä iteraattoreita on käytettävä erityyppisten astioiden kanssa vain siten
sekvenssin ja assosiatiivisten säiliöiden annetaan kulkea iteraattoreiden läpi. Kutakin iteraattorityyppiä käytetään tiettyjen toimintojen suorittamiseen. Tulo- ja lähtö-iteraattorit tukevat vähiten toimintoja. Niitä voidaan käyttää vain läpi astiassa. Lähtevät iteraattorit tukevat kaikkia syöttö- ja lähtö-iteraattoreiden toimintoja ja säilyttävät myös asemansa säiliössä. Kaksisuuntainen iteraattori, joka tukee kaikkia eteenpäin iteraattoreita, tarjoaa mahdollisuuden liikkua taaksepäin säiliössä.
Siksi olemme päässeet tämän artikkelin 'STL in C ++' -artikkeliin. Jos haluat oppia lisää, tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia Java-kehyksiä, kuten Hibernate & Spring.
Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.