STL c ++: Kaikki mitä sinun tarvitsee tietää



Tämä artikkeli antaa sinulle yksityiskohtaisen ja kattavan tiedon STL: stä C ++: ssa ja antaa sinulle käsityksen myös erilaisista säiliöistä.

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

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ä.

Container-STL-in-C++

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:

  1. Aseta
  2. Multiset
  3. Kartta
  4. 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.