C ++ je jedan od najmoćnijih i zastrašujućih programskih jezika s kojim biste se mogli susresti kao početnik. Razlog je prilično jednostavan. Za postizanje željenog rezultata potrebno je puno koda. Standardna biblioteka predložaka ili STL može vam pomoći riješiti ovu zagonetku.
Uzimajući u obzir količinu vremena i napora utrošenog tijekom pisanja koda za funkcije poput sortiranja i pretraživanja, STL vam može pomoći da sve ove operacije izvršite samo u jednom retku koda. Ova knjižnica može biti izuzetno korisna za rješavanje problema i tehničku pripremu razgovora.
Što je standardna biblioteka predložaka?
Standardna biblioteka predložaka ili STL knjižnica je C ++ koja se sastoji od unaprijed izgrađenih funkcija i spremnika. Uključuje neke istaknute klase predloška za uobičajene strukture podataka kao što su vektori, stogovi, redovi i neke korisne algoritamske funkcije poput binarnog pretraživanja kako bi se olakšalo programiranje.
Biblioteka standardnih predložaka na jeziku C ++ sastoji se od četiri komponente:
- Algoritmi
- Spremnici
- Funkcije
- Iteratore
Pogledajmo algoritme i spremnike dublje, jer su to najčešće korištene komponente STL-a.
Algoritmi u STL-u
The datoteka zaglavlja dio je STL-a koji se sastoji od nekoliko algoritamskih funkcija koje se mogu koristiti umjesto ručnog kodiranja. Neki od uključenih algoritama su binarno pretraživanje, sortiranje i obrnuto, što je izuzetno korisno.
Za početak morate uvesti zaglavlje u vašoj C ++ datoteci. Sintaksa je sljedeća:
#include
Za nadolazeće metode uzmite u obzir varijablu niza s vrijednostima {6, 2, 9, 1, 4} kao primjer.
int arr [] = {6, 2, 9, 1, 4};
vrsta()
The vrsta() funkcija vam pomaže sortirati sve elemente unutar navedene strukture podataka u rastućem redoslijedu. Ova funkcija uzima dva parametra: početni iterator i završni iterator.
Povezano: Uvod u algoritam sortiranja stapanja
Sintaksa:
sortiraj (start_iterator, end_iterator);
Evo kratkog primjera:
sortiraj (arr, arr + 5);
za (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}
Izlaz:
1 2 4 6 9
obrnuti ()
The obrnuti () funkcija obrće redoslijed elemenata u navedenoj strukturi podataka. Prihvaća dva parametra: početni iterator i završni iterator.
Sintaksa:
obrnuto (start_iterator, end_iterator);
Evo kratkog primjera za gornju metodu:
obrnuto (arr, arr + 5);
za (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}
Izlaz:
4 1 9 2 6
* min_element () i * max_element ()
Funkcije * max_element () i * min_element () vratiti maksimalnu i minimalnu vrijednost unutar navedene strukture podataka. Obje ove funkcije prihvaćaju dva argumenta: početni i krajnji iterator.
Sintaksa:
* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);
Otkrijmo koje vrijednosti ove funkcije vraćaju nakon što ih pozovu na primjeru polja:
cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;
Izlaz:
9
1
binarno_traženje ()
The binarno_traženje () metoda koristi se za utvrđivanje je li navedena vrijednost prisutna unutar strukture podataka ili ne. Prihvaća tri argumenta: početni iterator, završni iterator i vrijednost koju želite pronaći.
Binarno pretraživanje radi samo na razvrstanim strukturama podataka. Stoga ćete morati nazvati vrsta() metoda prije binarno_traženje () metoda.
Sintaksa:
binarno_traženje (start_iterator, end_iterator, value_to_find)
Evo demonstracije ove metode:
sortiraj (arr, arr + 5);
binarno_traženje (arr, arr + 5, 2)? cout << "Element pronađen": cout << "Element nije pronađen";
binarno_traženje (arr, arr + 5, 7)? cout << "Element pronađen": cout << "Element nije pronađen";
Izlaz:
Element pronađen
Element nije pronađen
računati()
The računati() metoda vraća broj pojavljivanja navedene vrijednosti unutar strukture podataka. Potrebna su tri argumenta: početni iterator, krajnji iterator i vrijednost za brojanje.
Sintaksa:
count (start_iterator, end_iterator, value_to_count);
Evo primjera ove metode:
cout << count (arr, arr + 5, 2) << endl;
Izlaz:
1
Kontejneri u STL
Spremnici su podatkovne strukture koje pohranjuju objekte i podatke. Vektori, popisi, stogovi, redovi, skupovi i mape neki su od primjera koji u njih pohranjuju podatke prema navedenom primitivnom tipu podataka. Te spremnike možete koristiti uvozom njihovih zaglavlja u datoteku C ++.
Tijekom inicijalizacije varijable spremnika, morate spomenuti primitivne podatke kao što su int, ugljen, niz unutar <> zagrade.
Istražimo neke od ovih spremnika detaljnije:
Vektor
Vektori su dinamički nizovi koji se mogu mijenjati i fleksibilni su za rad. Kada umetnete ili izbrišete element iz vektora, on automatski prilagođava veličinu vektora. Ovo je slično ArrayList struktura podataka na Javi.
Sintaksa:
#include
vektor ime_ varijable;
Evo nekoliko važnih vektorskih metoda:
- push_back (vrijednost): Ova metoda dodaje podatke vektoru.
- pop_back (): Ova metoda uklanja posljednji element iz vektora.
- umetanje (indeks, vrijednost): Ova metoda ubacuje nove elemente prije elementa na navedenom položaju.
- veličina(): Ova metoda vraća veličinu vektora.
- prazan(): Ova metoda provjerava je li vektor prazan ili nije.
- ispred(): Ova metoda vraća prvu vrijednost vektora.
- leđa(): Metoda povratak vraća zadnju vrijednost vektora.
- na (indeks): Ova metoda vraća vrijednost na navedenom položaju.
- izbrisati (indeks): Metoda brisanja uklanja elemente iz zadanog indeksa.
- čisto(): Ova metoda briše sve stavke u vektoru.
vektor v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
auto i = v.insert (v.begin () + 1, 7);
cout << "Veličina zadanog vektora" << v.size () << endl;
if (v.empty ()) {
cout << "Vektor je prazan" << endl;
} ostalo {
cout << "Vektor nije prazan" << endl;
}
cout << "Element na prvoj poziciji je" << v.front () << endl;
cout << "Element na posljednjoj poziciji je" << v.back () << endl;
cout << "Element na zadanom položaju je" << v.at (4) << endl;
v.erase (v.begin () + 1);
za (int i = 0; i cout << v [i] << "";
}
Izlaz:
Veličina zadanog vektora 6
Vektor nije prazan
Element na prvoj poziciji je 23
Element na posljednjoj poziciji je 5
Element na danom položaju je 10
23 12 56 10 5
Red
U strukturi podataka o redu, elementi se ubacuju sa stražnje strane i brišu s prednje strane. Stoga slijedi FIFO ("prvi ulaz, prvi izlaz").
Sintaksa:
#include
red ime_ varijable;
Evo nekoliko važnih metoda čekanja:
- push (vrijednost): Ova metoda dodaje elemente u red čekanja.
- pop (): Ova metoda briše prvi element reda.
- veličina(): Ova metoda vraća veličinu reda.
- ispred(): Ova metoda vraća prvi element reda.
- leđa(): Ova metoda vraća posljednji element reda.
red čekanja q;
q.tlačni (30);
q.tlačni (40);
q.guranje (50);
q.tlačni (60);
q.tlačni (70);
cout << "Prvi element je" << q.front () << endl;
cout << "Posljednji element je" << q.back () << endl;
cout << "Veličina reda je" << q.size () << endl;
q.pop ();
cout << "Ispis svih elemenata reda" << endl;
while (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}
Izlaz:
Prvi element je 30
Posljednji element je 70
Veličina reda je 5
Ispis svih elemenata reda
40 50 60 70
Stog
Spremnici za slaganje rade po LIFO metodi. LIFO je kratica za "zadnji ulaz, prvi izlaz". Podaci se guraju i iskaču s istog kraja.
Sintaksa:
#include
stog ime_ varijable;
Evo nekoliko važnih metoda slaganja:
- push (vrijednost): Ova metoda gura element u stogu.
- pop (): Ova metoda briše gornji element stoga.
- vrh(): Ova metoda vraća vrijednost zadnjeg elementa unesenog u stog.
- veličina(): Ova metoda vraća veličinu stoga.
- prazan(): Ova metoda provjerava je li stog prazan ili ne.
stog s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Vrh steka sadrži" << s.top () << endl;
s.pop ();
cout << "Vrh steka nakon izvođenja pop operacije:" << s.top () << endl;
cout << "Ispis svih elemenata stoga" << endl;
while (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}
Izlaz:
Na vrhu stoga nalazi se 60
Vrh hrpe nakon izvođenja pop operacije: 50
Ispis svih elemenata stoga
50 40 30
Postavi
Spremnici skupova koriste se za čuvanje jedinstvenih vrijednosti i vrijednost elementa ne može se mijenjati nakon što je umetnut u skup. Svi elementi u skupu pohranjeni su sortirano. Postavljeni spremnik sličan je postaviti strukturu podataka u Pythonu.
Sintaksa:
#include
postavljen ime_ varijable;
Evo nekoliko važnih postavljenih metoda:
- umetni (vrijednost): Ova metoda ubacuje elemente u skup.
- početi(): Ova metoda vraća iterator na prvi element skupa.
- kraj(): Ova metoda vraća iterator na zadnji element skupa.
- veličina(): Ova metoda vraća veličinu skupa.
- prazan(): Ova metoda provjerava je li skup prazan ili nije.
- pronađi (vrijednost): Ova metoda vraća iterator elementu prosljeđenom u parametru. Ako element nije pronađen, ova funkcija vraća iterator na kraj skupa.
- izbrisati (vrijednost): Ovom je metodom izbrisan navedeni element iz skupa.
set s;
s.umetak (20);
s.umetak (30);
s.umetak (40);
s.umetak (50);
s.umetak (60);
s.umetak (60);
s.umetak (60);
auto i = s.begin ();
cout << "Element na prvoj poziciji" << * i << endl;
cout << "Veličina skupa" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Element pronađen" << endl: cout << "Element nije pronađen" << endl;
s.erase (30);
cout << "Ispis svih elemenata" << endl;
za (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}
Izlaz:
Element na prvoj poziciji 20
Veličina skupa 5
Element pronađen
Ispis svih elemenata
20 40 50 60
C ++ ne mora biti tvrd
Kao i svaka druga vještina, vježba je od ključne važnosti da se STL iskoristi na najbolji mogući način. Ovi spremnici i algoritmi mogu vam pomoći uštedjeti puno vremena i jednostavni su za upotrebu. Započnite s vježbanjem gore prikazanih primjera i na kraju ćete ga početi koristiti i u svojim projektima.
Međutim, ako ovo prvi put učite C ++, započnite s učenjem osnova prije nego što nastavite razumijevati STL.
Želite naučiti C ++? Ovdje su najbolje web stranice i mrežni tečajevi za C ++ za početnike i iskusne programere.
Pročitajte Dalje
- Programiranje
- Vodiči za kodiranje
- Funkcionalno programiranje
Nitin je strastveni programer i student računalnog inženjerstva koji razvija web aplikacije pomoću JavaScript tehnologija. Radi kao slobodni web programer, a u slobodno vrijeme voli pisati za Linux i programiranje.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.