C ++ on yksi tehokkaimmista ja pelottavimmista ohjelmointikielistä, joita saatat kohdata aloittelijana. Syy on melko yksinkertainen. Se vaatii paljon koodia halutun tuloksen saavuttamiseksi. Tavallinen mallikirjasto tai STL voi auttaa ratkaisemaan tämän ongelman.

Kun otetaan huomioon aikaa ja vaivaa, kun kirjoitat koodia toiminnoille, kuten lajittelu ja haku, STL voi auttaa sinua suorittamaan kaikki nämä toiminnot vain yhdellä koodirivillä. Tämä kirjasto voi olla erittäin hyödyllinen ongelmanratkaisussa ja teknisen haastattelun valmistelussa.

Mikä on vakiomallikirjasto?

Standard Template Library, tai STL, on C ++ -kirjasto, joka koostuu valmiista toiminnoista ja säilöistä. Se sisältää joitain näkyviä malliluokkia yleisille tietorakenteille, kuten vektorit, pinot, jonot, ja joitain käteviä algoritmisia toimintoja, kuten binaarihaku ohjelmoinnin helpottamiseksi.

C ++: n vakiomallikirjasto koostuu neljästä osasta:

  1. Algoritmit
  2. Kontit
  3. Toiminnot
  4. Iteraattorit

Katsotaanpa tarkemmin algoritmeja ja säilöjä, koska ne ovat STL: n yleisimmin käytettyjä komponentteja.

instagram viewer

Algoritmit STL: ssä

otsikkotiedosto on osa STL: ää, joka koostuu useista algoritmisista funktioista, joita voidaan käyttää manuaalisen koodaamisen sijaan. Jotkut mukana olevista algoritmeista ovat binaarihaku, lajittelu ja peruutus, jotka ovat erittäin hyödyllisiä.

Aluksi sinun on tuotava otsikko C ++ -tiedostossasi. Syntaksi on seuraava:

#sisältää 

Harkitse tulevissa menetelmissä taulukon muuttujaa, jonka arvot ovat {6, 2, 9, 1, 4}.

int arr [] = {6, 2, 9, 1, 4};

järjestellä()

järjestellä() -toiminnon avulla voit lajitella kaikki määritetyn tietorakenteen sisällä olevat elementit nousevassa järjestyksessä. Tähän toimintoon tarvitaan kaksi parametria: aloitus iteraattori ja loppu iteraattori.

Liittyvät: Johdatus yhdistämisen lajittelualgoritmiin

Syntaksi:

lajittelu (start_iterator, end_iterator);

Tässä on nopea esimerkki:

lajittelu (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Tuotos:

1 2 4 6 9

käänteinen()

käänteinen() funktio kääntää määritettyjen tietorakenteiden elementtien järjestyksen. Se hyväksyy kaksi parametria: alkavan iteraattorin ja lopun iteraattorin.

Syntaksi:

käänteinen (aloitus_lukija, loppu_lukija);

Tässä on lyhyt esimerkki yllä olevasta menetelmästä:

taaksepäin (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Tuotos:

4 1 9 2 6

* min_element () ja * max_element ()

Toiminnot * max_element () ja * min_element () palauta suurin ja pienin arvo määritetyn tietorakenteen sisällä. Molemmat toiminnot hyväksyvät kaksi argumenttia: aloitus iteraattorin ja lopun iteraattorin.

Syntaksi:

* max_element (aloitus_lukija, loppu_lukija)
* min_element (aloitus_lukija, loppu_lukija);

Selvitetään, mitkä arvot nämä toiminnot palauttavat kutsuttaessa niitä esimerkkiryhmään:

cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;

Tuotos:

9
1

binaarinen_haku ()

binaarinen_haku () menetelmää käytetään selvittämään, onko määritetty arvo tietorakenteen sisällä vai ei. Se hyväksyy kolme argumenttia: alkavan iteraattorin, lopun iteraattorin ja etsimäsi arvon.

Binaarihaku toimii vain lajiteltujen tietorakenteiden kanssa. Siksi sinun on soitettava järjestellä() menetelmä ennen binaarinen_haku () menetelmä.

Syntaksi:

binaarinen_haku (alku_lukija, loppusiteraattori, arvo_hakuun)

Tässä on esimerkki tästä menetelmästä:

lajittelu (arr, arr + 5);
binaarinen_haku (arr, arr + 5, 2)? cout << "Elementti löydetty": cout << "Elementtiä ei löydy";
binaarinen_haku (arr, arr + 5, 7)? cout << "Elementti löydetty": cout << "Elementtiä ei löydy";

Tuotos:

Elementti löydetty
Elementtiä ei löydy

Kreivi()

Kreivi() method palauttaa määritetyn arvon esiintymismäärän tietorakenteessa. Se vaatii kolme argumenttia: aloitus iteraattori, loppu iteraattori ja laskettava arvo.

Syntaksi:

laskea (aloitus_lukija, loppu_lukija, arvo_määrä);

Tässä on esimerkki tästä menetelmästä:

cout << count (arr, arr + 5, 2) << endl;

Tuotos:

1

Kontit STL: ssä

Kontit ovat tietorakenteita, jotka tallentavat objekteja ja tietoja. Vektorit, luettelot, pinot, jonot, joukot ja kartat ovat joitain esimerkkejä, jotka tallentavat niihin tietoja määritetyn primitiivisen tietotyypin mukaan. Voit käyttää näitä säilöjä tuomalla niiden otsikot C ++ -tiedostoon.

Alustamalla säilömuuttujaa sinun on mainittava primitiiviset tiedot, kuten int, hiiltyä, merkkijono sisällä <> suluissa.

Tutkitaan joitain näistä säiliöistä tarkemmin:

Vektori

Vektorit ovat dynaamisia matriiseja, joiden kokoa voidaan muuttaa ja joustavasti työskennellä. Kun lisäät tai poistat elementin vektorista, se säätää vektorin kokoa automaattisesti. Tämä on samanlainen kuin ArrayList-tietorakenne Java-kielellä.

Syntaksi:

#sisältää 
vektori muuttujan_nimi;

Tässä on joitain tärkeitä vektorimenetelmiä:

  1. push_back (arvo): Tämä menetelmä liittää tiedot vektoriin.
  2. pop_back (): Tämä menetelmä poistaa viimeisen elementin vektorista.
  3. lisää (hakemisto, arvo): Tämä menetelmä lisää uusia elementtejä ennen elementtiä määritettyyn kohtaan.
  4. koko(): Tämä menetelmä palauttaa vektorin koon.
  5. tyhjä(): Tämä menetelmä tarkistaa, onko vektori tyhjä vai ei.
  6. edessä (): Tämä menetelmä palauttaa vektorin ensimmäisen arvon.
  7. takaisin(): Takaisin-menetelmä palauttaa vektorin viimeisen arvon.
  8. at (hakemisto): Tämä menetelmä palauttaa arvon määritettyyn kohtaan.
  9. pyyhi (hakemisto): Pyyhintämenetelmä poistaa elementit annetusta hakemistosta.
  10. asia selvä(): Tämä menetelmä tyhjentää kaikki vektorin kohteet.
vektori  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v. lisää (v. alku () + 1, 7);
cout << "Annetun vektorin koko" << v.size () << endl;
jos (v. tyhjä ()) {
cout << "Vektori on tyhjä" << endl;
} muu {
cout << "Vektori ei ole tyhjä" << endl;
}
cout << "Ensimmäisen sijainnin elementti on" << v.front () << endl;
cout << "Elementti viimeisessä sijainnissa on" << v.back () << endl;
cout << "Elementti annetussa paikassa on" << v.at (4) << endl;
v.erase (v.alku () + 1);
for (int i = 0; i cout << v [i] << "";
}

Tuotos:

Annetun vektorin koko 6
Vektori ei ole tyhjä
Ensimmäisen sijainnin elementti on 23
Viimeisen sijainnin elementti on 5
Annettu sijainti on 10
23 12 56 10 5

Jonottaa

Jonotietorakenteessa elementit lisätään takaa ja poistetaan edestä. Siksi se noudattaa FIFO-lähestymistapaa ("ensimmäinen sisään, ensin ulos").

Syntaksi:

#sisältää 
jonottaa muuttujan_nimi;

Tässä on joitain tärkeitä jonomenetelmiä:

  1. työnnä (arvo): Tämä menetelmä lisää elementtejä jonoon.
  2. pop(): Tämä menetelmä poistaa jonon ensimmäisen elementin.
  3. koko(): Tämä menetelmä palauttaa jonon koon.
  4. edessä (): Tämä menetelmä palauttaa jonon ensimmäisen elementin.
  5. takaisin(): Tämä menetelmä palauttaa jonon viimeisen elementin.
jono  q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Ensimmäinen elementti on" << q.front () << endl;
cout << "Viimeinen elementti on" << q.back () << endl;
cout << "Jonon koko on" << q.size () << endl;
q.pop ();
cout << "Jonon kaikkien elementtien tulostaminen" << endl;
kun (! q. tyhjä ()) {
cout << q.front () << "";
q.pop ();
}

Tuotos:

Ensimmäinen elementti on 30
Viimeinen elementti on 70
Jonon koko on 5
Tulostaa kaikki jonon elementit
40 50 60 70

Pino

Pinon kontit toimivat LIFO-menetelmällä. LIFO tarkoittaa "viimeinen sisään, ensin ulos". Tietoja työnnetään ja avataan samasta päästä.

Syntaksi:

#sisältää 
pino muuttujan_nimi;

Tässä on joitain tärkeitä pinomenetelmiä:

  1. työnnä (arvo): Tämä menetelmä työntää elementin pinoon.
  2. pop(): Tämä menetelmä poistaa pinon yläosan.
  3. alkuun (): Tämä menetelmä palauttaa viimeisen pinoon syötetyn elementin arvon.
  4. koko(): Tämä menetelmä palauttaa pinon koon.
  5. tyhjä(): Tämä menetelmä tarkistaa, onko pino tyhjä vai ei.
pino  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Pinon yläosassa on" << s.top () << endl;
s.pop ();
cout << "Pinon yläosa pop-operaation suorittamisen jälkeen:" << s.top () << endl;
cout << "Nipun kaikkien osien tulostaminen" << endl;
kun (! s. tyhjä ()) {
cout << s.top () << "";
s.pop ();
}

Tuotos:

Pinon yläosassa on 60
Pinon yläosa pop-operaation suorittamisen jälkeen: 50
Tulostetaan kaikki pinon osat
50 40 30

Aseta

Sarjasäiliöitä käytetään yksilöllisten arvojen säilyttämiseen, eikä elementin arvoa voida muuttaa, kun se on lisätty joukkoon. Kaikki sarjan elementit tallennetaan lajiteltuina. Asetettu astia on samanlainen kuin aseta tietorakenne Pythonissa.

Syntaksi:

#sisältää 
aseta muuttujan_nimi;

Tässä on joitain tärkeitä asetettuja menetelmiä:

  1. lisää (arvo): Tämä menetelmä lisää elementit sarjaan.
  2. alkaa(): Tämä menetelmä palauttaa iteraattorin joukon ensimmäiseen elementtiin.
  3. loppu (): Tämä menetelmä palauttaa iteraattorin joukon viimeiseen elementtiin.
  4. koko(): Tämä menetelmä palauttaa sarjan koon.
  5. tyhjä(): Tämä menetelmä tarkistaa, onko sarja tyhjä vai ei.
  6. löytää (arvo): Tämä menetelmä palauttaa iteraattorin parametrissa välitetylle elementille. Jos elementtiä ei löydy, tämä toiminto palauttaa iteraattorin joukon loppuun.
  7. pyyhi (arvo): Tämä menetelmä poisti määritetyn elementin joukosta.
aseta  s;
s. lisää (20);
s.insertti (30);
s.insertti (40);
s.insertti (50);
s.insertti (60);
s.insertti (60);
s.insertti (60);
auto i = s. alku ();
cout << "Elementti ensimmäisessä sijainnissa" << * i << endl;
cout << "Joukon koko" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Elementti löydetty" << endl: cout << "Elementtiä ei löydy" << endl;
s.erase (30);
cout << "Kaikkien elementtien tulostaminen" << endl;
for (auto i = s. alku (); i! = s.end (); i ++) {
cout << * i << "";
}

Tuotos:

Elementti ensimmäisessä sijainnissa 20
Sarjan koko 5
Elementti löydetty
Kaikkien elementtien tulostaminen
20 40 50 60

C ++: n ei tarvitse olla kova

Aivan kuten kaikki muutkin taidot, myös harjoittelu on välttämätöntä, jotta saat kaiken irti STL: stä. Nämä säilöt ja algoritmit voivat auttaa sinua säästämään paljon aikaa ja ovat helppokäyttöisiä. Aloita harjoittelemalla yllä esitettyjä esimerkkejä ja lopulta alat käyttää sitä myös omissa projekteissasi.

Jos kuitenkin opit ensimmäistä kertaa C ++: ta, aloita oppimalla perusteet, ennen kuin jatkat STL: n ymmärtämistä.

Sähköposti
Kuinka oppia C ++ -ohjelmointi: 6 sivustoa aloittaaksesi

Haluatko oppia C ++: n? Tässä ovat parhaat C ++ -sivustot ja verkkokurssit aloittelijoille ja kokeneille ohjelmoijille.

Lue seuraava

Liittyvät aiheet
  • Ohjelmointi
  • Koodausoppaat
  • Toiminnallinen ohjelmointi
Kirjailijasta
Nitin Ranganath (22 artikkelia julkaistu)

Nitin on innokas ohjelmistokehittäjä ja tietokonetekniikan opiskelija, joka kehittää verkkosovelluksia JavaScript-tekniikoilla. Hän työskentelee freelance-web-kehittäjänä ja haluaa kirjoittaa Linuxille ja ohjelmoinnille vapaa-ajallaan.

Lisää Nitin Ranganathista

Tilaa uutiskirjeemme

Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja erikoistarjouksia!

Vielä yksi askel !!!

Vahvista sähköpostiosoitteesi juuri lähettämässäsi sähköpostiviestissä.

.