C ++ er et af de mest magtfulde og skræmmende programmeringssprog, som du måske støder på som begynder. Årsagen er ret ligetil. Det kræver en masse kode for at opnå det ønskede output. Standardskabelonbiblioteket, eller STL, kan hjælpe dig med at løse dette gåde.
I betragtning af den tid og kræfter, der forbruges, mens du skriver kode til funktioner som sortering og søgning, kan STL hjælpe dig med at udføre alle disse operationer med kun en enkelt kodelinje. Dette bibliotek kan være utroligt nyttigt til problemløsning og teknisk interviewforberedelse.
Hvad er standardskabelonbiblioteket?
Standardskabelonbiblioteket, eller STL, er et C ++ - bibliotek, der består af forudbyggede funktioner og containere. Det inkluderer nogle fremtrædende skabelonklasser til almindelige datastrukturer som vektorer, stakke, køer og nogle praktiske algoritmiske funktioner som binær søgning for at gøre programmeringen lettere.
Standardskabelonbiblioteket i C ++ består af fire komponenter:
- Algoritmer
- Beholdere
- Funktioner
- Iteratorer
Lad os se nærmere på algoritmerne og containerne i større dybde, da det er de mest anvendte komponenter i STL.
Algoritmer i STL
Det header-fil er en del af STL, der består af flere algoritmiske funktioner, der kan bruges i stedet for manuelt at kode dem. Nogle af de inkluderede algoritmer er binær søgning, sortering og omvendt, hvilket er yderst nyttigt.
Til at begynde med skal du importere header i din C ++ - fil. Syntaksen er som følger:
#omfatte
For de kommende metoder skal du overveje en matrixvariabel med værdierne {6, 2, 9, 1, 4} som et eksempel.
int arr [] = {6, 2, 9, 1, 4};
sortere()
Det sortere() funktion hjælper dig med at sortere alle elementerne i den angivne datastruktur i stigende rækkefølge. Denne funktion tager to parametre: start-iteratoren og den endende iterator.
Relaterede: En introduktion til flettsorteringsalgoritmen
Syntaks:
sorter (start_iterator, end_iterator);
Her er et hurtigt eksempel:
sorter (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}
Produktion:
1 2 4 6 9
baglæns()
Det baglæns() funktion vender rækkefølgen af elementer i den specificerede datastruktur. Den accepterer to parametre: start-iteratoren og slutteriteratoren.
Syntaks:
omvendt (start_iterator, end_iterator);
Her er et kort eksempel på ovenstående metode:
omvendt (arr, arr + 5);
for (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}
Produktion:
4 1 9 2 6
* min_element () og * max_element ()
Funktionerne * max_element () og * min_element () returnere henholdsvis den maksimale og mindste værdi inden for den angivne datastruktur. Begge disse funktioner accepterer to argumenter: start-iteratoren og end-iteratoren.
Syntaks:
* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);
Lad os finde ud af, hvilke værdier disse funktioner vender tilbage, når vi kalder dem på eksemplet array:
cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;
Produktion:
9
1
binær_søgning ()
Det binær_søgning () metode bruges til at finde ud af, om den angivne værdi er til stede inde i datastrukturen eller ej. Det accepterer tre argumenter: start-iteratoren, slutteriteratoren og den værdi, du vil finde.
Binær søgning fungerer kun på sorterede datastrukturer. Derfor skal du ringe til sortere() metode først før binær_søgning () metode.
Syntaks:
binær_søgning (start_iterator, end_iterator, værdi_til_find)
Her er en demonstration af denne metode:
sorter (arr, arr + 5);
binær_søgning (arr, arr + 5, 2)? cout << "Element fundet": cout << "Element ikke fundet";
binær_søgning (arr, arr + 5, 7)? cout << "Element fundet": cout << "Element ikke fundet";
Produktion:
Element fundet
Element ikke fundet
tælle()
Det tælle() metode returnerer optællingen af forekomsten af den angivne værdi inde i datastrukturen. Det tager tre argumenter: start-iteratoren, slut-iteratoren og værdien, der skal tælles.
Syntaks:
tælle (start_iterator, end_iterator, værdi_til_tælling);
Her er et eksempel på denne metode:
cout << antal (arr, arr + 5, 2) << endl;
Produktion:
1
Beholdere i STL
Beholdere er datastrukturer, der gemmer objekter og data. Vektorer, lister, stakke, køer, sæt og kort er nogle af eksemplerne, der gemmer data i dem i henhold til den specificerede primitive datatype. Du kan bruge disse containere ved at importere deres respektive overskrifter i C ++ - filen.
Mens du initialiserer containervariablen, skal du nævne de primitive data som f.eks int, char, snor inde i <> beslag.
Lad os udforske nogle af disse containere mere detaljeret:
Vektor
Vektorer er dynamiske arrays, der kan tilpasses og er fleksible at arbejde med. Når du indsætter eller sletter et element fra vektoren, justerer det automatisk vektorens størrelse. Dette svarer til ArrayList datastruktur i Java.
Syntaks:
#omfatte
vektor variabel_navn;
Her er nogle vigtige vektormetoder:
- push_back (værdi): Denne metode føjer dataene til vektoren.
- pop_back (): Denne metode fjerner det sidste element fra vektoren.
- indsæt (indeks, værdi): Denne metode indsætter nye elementer før elementet på den angivne position.
- størrelse(): Denne metode returnerer størrelsen på vektoren.
- tom(): Denne metode kontrollerer, om vektoren er tom eller ej.
- foran(): Denne metode returnerer den første værdi af vektoren.
- tilbage(): Tilbagemetoden returnerer den sidste værdi af vektoren.
- ved (indeks): Denne metode returnerer værdien på den angivne position.
- slet (indeks): Sletningsmetoden fjerner elementer fra det givne indeks.
- klar(): Denne metode rydder alle elementerne i vektoren.
vektor v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v. indsættelse (v.begynder () + 1, 7);
cout << "Størrelsen af den givne vektor" << v.størrelse () << endl;
hvis (v. udlig ()) {
cout << "Vector er tom" << endl;
} andet {
cout << "Vektor er ikke tom" << endl;
}
cout << "Element ved første position er" << v.front () << endl;
cout << "Element i sidste position er" << v.back () << endl;
cout << "Element i den givne position er" << v.at (4) << endl;
v.ase (v.begin () + 1);
for (int i = 0; i cout << v [i] << "";
}
Produktion:
Størrelsen på den givne vektor 6
Vektor er ikke tom
Element ved første position er 23
Element ved sidste position er 5
Element ved den givne position er 10
23 12 56 10 5
Kø
I kø-datastrukturen indsættes elementer bagfra og slettes forfra. Derfor følger den FIFO ("første ind, først ud") tilgang.
Syntaks:
#omfatte
kø variabel_navn;
Her er nogle vigtige kømetoder:
- skub (værdi): Denne metode tilføjer elementer til køen.
- pop (): Denne metode sletter det første element i køen.
- størrelse(): Denne metode returnerer køens størrelse.
- foran(): Denne metode returnerer det første element i køen.
- tilbage(): Denne metode returnerer det sidste element i køen.
kø q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Det første element er" << q.front () << endl;
cout << "Det sidste element er" << q.back () << endl;
cout << "Køens størrelse er" << q.størrelse () << endl;
q.pop ();
cout << "Udskrivning af alle elementerne i køen" << endl;
mens (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}
Produktion:
Det første element er 30
Det sidste element er 70
Køens størrelse er 5
Udskriver alle elementerne i køen
40 50 60 70
Stak
Stakbeholdere fungerer på LIFO-metoden. LIFO står for "sidste ind, først ud". Data skubbes og poppes fra samme ende.
Syntaks:
#omfatte
stak variabel_navn;
Her er nogle vigtige stakmetoder:
- skub (værdi): Denne metode skubber elementet i stakken.
- pop (): Denne metode sletter det øverste element i stakken.
- top(): Denne metode returnerer værdien af det sidste element, der blev indtastet i stakken.
- størrelse(): Denne metode returnerer størrelsen på stakken.
- tom(): Denne metode kontrollerer, om stakken er tom eller ej.
stak s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Den øverste del af stakken indeholder" << s.top () << endl;
s.pop ();
cout << "Den øverste del af stakken efter udførelse af popoperation:" << s.top () << endl;
cout << "Udskrivning af alle elementerne i stakken" << endl;
mens (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}
Produktion:
Den øverste del af stakken indeholder 60
Den øverste del af stakken efter pop-operation: 50
Udskrivning af alle elementerne i stakken
50 40 30
Sæt
Sætbeholdere bruges til at indeholde unikke værdier, og elementets værdi kan ikke ændres, når det først er indsat i sættet. Alle elementerne i sættet gemmes sorteret. Den indstillede beholder ligner indstil datastruktur i Python.
Syntaks:
#omfatte
sæt variabel_navn;
Her er nogle vigtige sætmetoder:
- indsæt (værdi): Denne metode indsætter elementer i sættet.
- begynde(): Denne metode returnerer iteratoren til det første element i sættet.
- ende(): Denne metode returnerer iteratoren til det sidste element i sættet.
- størrelse(): Denne metode returnerer sætets størrelse.
- tom(): Denne metode kontrollerer, om sættet er tomt eller ej.
- find (værdi): Denne metode returnerer iteratoren til det element, der er sendt i parameteren. Hvis elementet ikke findes, returnerer denne funktion iteratoren til slutningen af sættet.
- slet (værdi): Denne metode slettede det angivne element fra sættet.
sæt s;
s.indsat (20);
s.indsat (30);
s.indsat (40);
s.indsat (50);
s.indsat (60);
s.indsat (60);
s.indsat (60);
auto i = s.begin ();
cout << "Element i første position" << * i << endl;
cout << "Sætets størrelse" << s.størrelse () << endl;
s.find (20)! = s.end ()? cout << "Element fundet" << endl: cout << "Element ikke fundet" << endl;
s.erase (30);
cout << "Udskrivning af alle elementer" << endl;
for (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}
Produktion:
Element ved første position 20
Sætets størrelse 5
Element fundet
Udskrivning af alle elementerne
20 40 50 60
C ++ behøver ikke at være hårdt
Ligesom alle andre færdigheder er praksis afgørende for at få mest muligt ud af STL. Disse containere og algoritmer kan hjælpe dig med at spare meget tid og er nemme at bruge. Start med at øve på eksemplerne vist ovenfor, og du vil efterhånden også bruge det i dine egne projekter.
Men hvis dette er din første gang at lære C ++, skal du starte med at lære det grundlæggende, inden du fortsætter med at forstå STL.
Vil du lære C ++? Her er de bedste websteder og online kurser til C ++ for både begyndere og erfaringsprogrammerere.
Læs Næste
- Programmering
- Kodning Tutorials
- Funktionel programmering
Nitin er en ivrig softwareudvikler og en computeringeniørstuderende, der udvikler webapplikationer ved hjælp af JavaScript-teknologier. Han arbejder som freelance webudvikler og kan lide at skrive til Linux og programmering i sin fritid.
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.