C ++ er et av de mest kraftfulle og skremmende programmeringsspråkene du kan støte på som nybegynner. Årsaken er ganske grei. Det krever mye kode for å oppnå ønsket utgang. Standardmalbiblioteket, eller STL, kan hjelpe deg med å løse dette problemet.

Tatt i betraktning hvor mye tid og krefter du bruker mens du skriver kode for funksjoner som sortering og søk, kan STL hjelpe deg med å utføre alle disse operasjonene med bare en enkelt kodelinje. Dette biblioteket kan være utrolig nyttig for problemløsing og teknisk intervjuforberedelse.

Hva er standardmalbiblioteket?

Standardmalbiblioteket, eller STL, er et C ++ - bibliotek som består av forhåndsbygde funksjoner og containere. Den inkluderer noen fremtredende malklasser for vanlige datastrukturer som vektorer, stabler, køer og noen nyttige algoritmiske funksjoner som binært søk for å gjøre programmeringen enklere.

Standardmalbiblioteket i C ++ består av fire komponenter:

  1. Algoritmer
  2. Beholdere
  3. Funksjoner
  4. Iteratorer

La oss ta en titt på algoritmene og beholderne i større dybde, da de er de mest brukte komponentene i STL.

instagram viewer

Algoritmer i STL

De header-fil er en del av STL som består av flere algoritmiske funksjoner som kan brukes i stedet for å manuelt kode dem. Noen av algoritmene som er inkludert er binært søk, sortering og omvendt, noe som er ekstremt nyttig.

Til å begynne med må du importere topptekst i C ++ - filen. Syntaksen er som følger:

#inkludere 

For de kommende metodene, ta en matrixvariabel med verdiene {6, 2, 9, 1, 4} som et eksempel.

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

sortere()

De sortere() funksjonen hjelper deg med å sortere alle elementene i den angitte datastrukturen i stigende rekkefølge. Denne funksjonen tar to parametere: start-iteratoren og slutt-iteratoren.

I slekt: En introduksjon til Merge Sort Algorithm

Syntaks:

sorter (start_iterator, end_iterator);

Her er et raskt eksempel:

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

Produksjon:

1 2 4 6 9

omvendt()

De omvendt() funksjon reverserer rekkefølgen på elementene i den angitte datastrukturen. Den godtar to parametere: start-iteratoren og slutt-iteratoren.

Syntaks:

omvendt (start_iterator, end_iterator);

Her er et kort eksempel for metoden ovenfor:

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

Produksjon:

4 1 9 2 6

* min_element () og * max_element ()

Funksjonene * max_element () og * min_element () returnere maksimums- og minimumsverdien i henhold til den angitte datastrukturen. Begge disse funksjonene godtar to argumenter: start-iteratoren og end-iteratoren.

Syntaks:

* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);

La oss finne ut hvilke verdier disse funksjonene returnerer når vi kaller dem i eksempelmatrisen:

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

Produksjon:

9
1

binærsøk ()

De binærsøk () metoden brukes til å finne ut om den angitte verdien er tilstede i datastrukturen eller ikke. Den godtar tre argumenter: start-iteratoren, den endende iteratoren og verdien du vil finne.

Binært søk fungerer bare på sorterte datastrukturer. Derfor må du ringe sortere() metoden først før binærsøk () metode.

Syntaks:

binary_search (start_iterator, end_iterator, value_to_find)

Her er en demonstrasjon av denne metoden:

sorter (arr, arr + 5);
binærsøk (arr, arr + 5, 2)? cout << "Element funnet": cout << "Element ikke funnet";
binærsøk (arr, arr + 5, 7)? cout << "Element funnet": cout << "Element ikke funnet";

Produksjon:

Element funnet
Element ikke funnet

telle()

De telle() metoden returnerer tellingen av forekomst av den angitte verdien i datastrukturen. Det tar tre argumenter: start-iteratoren, end-iteratoren og verdien du skal telle.

Syntaks:

count (start_iterator, end_iterator, value_to_count);

Her er et eksempel på denne metoden:

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

Produksjon:

1

Beholdere i STL

Beholdere er datastrukturene som lagrer objekter og data. Vektorer, lister, stabler, køer, sett og kart er noen av eksemplene som lagrer data i dem i henhold til den angitte primitive datatypen. Du kan bruke disse beholderne ved å importere deres respektive overskrifter i C ++ - filen.

Mens du initialiserer containervariabelen, må du nevne de primitive dataene som int, røye, streng inne i <> braketter.

La oss utforske noen av disse beholderne mer detaljert:

Vector

Vektorer er dynamiske matriser som kan endres og er fleksible å jobbe med. Når du setter inn eller sletter et element fra vektoren, justerer det automatisk størrelsen på vektoren. Dette ligner på ArrayList datastruktur i Java.

Syntaks:

#inkludere 
vektor variabelnavn;

Her er noen viktige vektormetoder:

  1. push_back (verdi): Denne metoden legger dataene til vektoren.
  2. pop_back (): Denne metoden fjerner det siste elementet fra vektoren.
  3. sett inn (indeks, verdi): Denne metoden setter inn nye elementer før elementet på den angitte posisjonen.
  4. størrelse(): Denne metoden returnerer størrelsen på vektoren.
  5. tømme(): Denne metoden sjekker om vektoren er tom eller ikke.
  6. front(): Denne metoden returnerer den første verdien av vektoren.
  7. tilbake(): Tilbake-metoden returnerer den siste verdien av vektoren.
  8. ved (indeks): Denne metoden returnerer verdien på den angitte posisjonen.
  9. slett (indeks): Slettemetoden fjerner elementer fra den gitte indeksen.
  10. klar(): Denne metoden tømmer alle elementene i vektoren.
vektor  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v. innsetting (v.begin () + 1, 7);
cout << "Størrelsen på den gitte vektoren" << v.size () << endl;
if (v.empty ()) {
cout << "Vektoren er tom" << endl;
} annet {
cout << "Vektoren er ikke tom" << endl;
}
cout << "Element ved første posisjon er" << v.front () << endl;
cout << "Element i siste posisjon er" << v.back () << endl;
cout << "Element i gitt posisjon er" << v.at (4) << endl;
v.erase (v.begin () + 1);
for (int i = 0; i cout << v [i] << "";
}

Produksjon:

Størrelsen på den gitte vektoren 6
Vektor er ikke tom
Element ved første posisjon er 23
Element ved siste posisjon er 5
Element ved gitt posisjon er 10
23 12 56 10 5

I kø-datastrukturen settes elementer inn bakfra og slettes fra fronten. Derfor følger den FIFO ("først inn, først ut") tilnærming.

Syntaks:

#inkludere 
variabelnavn;

Her er noen viktige kømetoder:

  1. trykk (verdi): Denne metoden legger til elementer i køen.
  2. pop (): Denne metoden sletter det første elementet i køen.
  3. størrelse(): Denne metoden returnerer størrelsen på køen.
  4. front(): Denne metoden returnerer det første elementet i køen.
  5. tilbake(): Denne metoden returnerer det siste elementet i køen.
 q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Det første elementet er" << q.front () << endl;
cout << "Det siste elementet er" << q.back () << endl;
cout << "Størrelsen på køen er" << q.size () << endl;
q.pop ();
cout << "Skrive ut alle elementene i køen" << endl;
mens (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Produksjon:

Det første elementet er 30
Det siste elementet er 70
Størrelsen på køen er 5
Skriver ut alle elementene i køen
40 50 60 70

Stable

Stablebeholdere fungerer på LIFO-metoden. LIFO står for "last in, first out". Data skyves og poppes fra samme ende.

Syntaks:

#inkludere 
stable variabelnavn;

Her er noen viktige stabelmetoder:

  1. trykk (verdi): Denne metoden skyver elementet i bunken.
  2. pop (): Denne metoden sletter toppelementet i stakken.
  3. topp(): Denne metoden returnerer verdien av det siste elementet som ble lagt inn i bunken.
  4. størrelse(): Denne metoden returnerer størrelsen på stakken.
  5. tømme(): Denne metoden sjekker om bunken er tom eller ikke.
stable  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Toppen av bunken inneholder" << s.top () << endl;
s.pop ();
cout << "Toppen av bunken etter å ha utført popoperasjon:" << s.top () << endl;
cout << "Skrive ut alle elementene i stakken" << endl;
mens (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Produksjon:

Toppen av stabelen inneholder 60
Toppen av stabelen etter å ha utført popoperasjon: 50
Skriver ut alle elementene i bunken
50 40 30

Sett

Settbeholdere brukes til å holde unike verdier, og verdien til elementet kan ikke endres når den er satt inn i settet. Alle elementene i settet er lagret på en sortert måte. Den innstilte beholderen ligner på sette datastruktur i Python.

Syntaks:

#inkludere 
sett variabelnavn;

Her er noen viktige metoder:

  1. sett inn (verdi): Denne metoden setter inn elementer i settet.
  2. begynne(): Denne metoden returnerer iteratoren til det første elementet i settet.
  3. slutt(): Denne metoden returnerer iteratoren til det siste elementet i settet.
  4. størrelse(): Denne metoden returnerer størrelsen på settet.
  5. tømme(): Denne metoden sjekker om settet er tomt eller ikke.
  6. finn (verdi): Denne metoden returnerer iteratoren til elementet som er sendt i parameteren. Hvis elementet ikke blir funnet, returnerer denne funksjonen iteratoren til slutten av settet.
  7. slett (verdi): Denne metoden slettet det angitte elementet fra settet.
sett  s;
s.insert (20);
s.insert (30);
s.insert (40);
s.insert (50);
s.insert (60);
s.insert (60);
s.insert (60);
auto i = s.begin ();
cout << "Element i første posisjon" << * i << endl;
cout << "Størrelsen på settet" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Element funnet" << endl: cout << "Element ikke funnet" << endl;
s.erase (30);
cout << "Skrive ut alle elementene" << endl;
for (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

Produksjon:

Element ved første posisjon 20
Settets størrelse 5
Element funnet
Skriver ut alle elementene
20 40 50 60

C ++ trenger ikke å være vanskelig

Akkurat som alle andre ferdigheter, er praksis viktig for å få mest mulig ut av STL. Disse beholderne og algoritmene kan hjelpe deg med å spare mye tid og er enkle å bruke. Begynn med å øve på eksemplene som er vist ovenfor, og du vil til slutt begynne å bruke den også i dine egne prosjekter.

Men hvis dette er første gang du lærer C ++, begynn med å lære det grunnleggende før du fortsetter å forstå STL.

E-post
Hvordan lære C ++ programmering: 6 nettsteder å komme i gang

Vil du lære C ++? Her er de beste nettstedene og nettkursene til C ++ for både nybegynnere og programmerere.

Les Neste

Relaterte temaer
  • Programmering
  • Koding opplæringsprogrammer
  • Funksjonell programmering
Om forfatteren
Nitin Ranganath (22 artikler publisert)

Nitin er en ivrig programvareutvikler og en datamaskiningeniørstudent som utvikler webapplikasjoner ved hjelp av JavaScript-teknologier. Han jobber som frilans nettutvikler og liker å skrive for Linux og programmering på fritiden.

Mer fra Nitin Ranganath

Abonner på vårt nyhetsbrev

Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Ett steg til…!

Bekreft e-postadressen din i e-posten vi nettopp sendte deg.

.