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:
- Algoritmer
- Beholdere
- Funksjoner
- Iteratorer
La oss ta en titt på algoritmene og beholderne i større dybde, da de er de mest brukte komponentene i STL.
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:
- push_back (verdi): Denne metoden legger dataene til vektoren.
- pop_back (): Denne metoden fjerner det siste elementet fra vektoren.
- sett inn (indeks, verdi): Denne metoden setter inn nye elementer før elementet på den angitte posisjonen.
- størrelse(): Denne metoden returnerer størrelsen på vektoren.
- tømme(): Denne metoden sjekker om vektoren er tom eller ikke.
- front(): Denne metoden returnerer den første verdien av vektoren.
- tilbake(): Tilbake-metoden returnerer den siste verdien av vektoren.
- ved (indeks): Denne metoden returnerer verdien på den angitte posisjonen.
- slett (indeks): Slettemetoden fjerner elementer fra den gitte indeksen.
- 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
Kø
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
kø variabelnavn;
Her er noen viktige kømetoder:
- trykk (verdi): Denne metoden legger til elementer i køen.
- pop (): Denne metoden sletter det første elementet i køen.
- størrelse(): Denne metoden returnerer størrelsen på køen.
- front(): Denne metoden returnerer det første elementet i køen.
- tilbake(): Denne metoden returnerer det siste elementet i køen.
kø 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:
- trykk (verdi): Denne metoden skyver elementet i bunken.
- pop (): Denne metoden sletter toppelementet i stakken.
- topp(): Denne metoden returnerer verdien av det siste elementet som ble lagt inn i bunken.
- størrelse(): Denne metoden returnerer størrelsen på stakken.
- 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:
- sett inn (verdi): Denne metoden setter inn elementer i settet.
- begynne(): Denne metoden returnerer iteratoren til det første elementet i settet.
- slutt(): Denne metoden returnerer iteratoren til det siste elementet i settet.
- størrelse(): Denne metoden returnerer størrelsen på settet.
- tømme(): Denne metoden sjekker om settet er tomt eller ikke.
- 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.
- 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.
Vil du lære C ++? Her er de beste nettstedene og nettkursene til C ++ for både nybegynnere og programmerere.
Les Neste
- Programmering
- Koding opplæringsprogrammer
- Funksjonell programmering
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.
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.