C ++ är ett av de mest kraftfulla och skrämmande programmeringsspråken som du kan stöta på som nybörjare. Anledningen är ganska enkel. Det kräver mycket kod för att uppnå önskad effekt. Standardmallbiblioteket, eller STL, kan hjälpa dig att lösa detta problem.

Med tanke på hur mycket tid och ansträngning som konsumeras när du skriver kod för funktioner som att sortera och söka, kan STL hjälpa dig att utföra alla dessa åtgärder med bara en enda kodrad. Detta bibliotek kan vara oerhört användbart för problemlösning och teknisk intervjuförberedelse.

Vad är standardmallbiblioteket?

Standardmallbiblioteket, eller STL, är ett C ++ - bibliotek som består av förbyggda funktioner och behållare. Den innehåller några framstående mallklasser för vanliga datastrukturer som vektorer, staplar, köer och några praktiska algoritmiska funktioner som binär sökning för att göra programmeringen enklare.

Standardmallbiblioteket i C ++ består av fyra komponenter:

  1. Algoritmer
  2. Behållare
  3. Funktioner
  4. Iteratorer
instagram viewer

Låt oss ta en titt på algoritmerna och behållarna i mer djup, eftersom de är de vanligaste komponenterna i STL.

Algoritmer i STL

De header-fil är en del av STL som består av flera algoritmiska funktioner som kan användas istället för att manuellt koda dem. Några av de inkluderade algoritmerna är binär sökning, sortering och omvänd, vilket är extremt användbart.

Till att börja med måste du importera rubrik i din C ++ - fil. Syntaksen är som följer:

#omfatta 

För de kommande metoderna, betrakta en arrayvariabel med värdena {6, 2, 9, 1, 4} som ett exempel.

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

sortera()

De sortera() -funktionen hjälper dig att sortera alla element i den angivna datastrukturen i stigande ordning. Denna funktion tar två parametrar: start-iteratorn och slut-iteratorn.

Relaterad: En introduktion till Merge Sort Algorithm

Syntax:

sortera (start_iterator, end_iterator);

Här är ett snabbt exempel:

sortera (arr, arr + 5);
för (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Produktion:

1 2 4 6 9

omvänd()

De omvänd() funktion vänder ordningen på element i den angivna datastrukturen. Den accepterar två parametrar: start-iteratorn och slut-iteratorn.

Syntax:

omvänd (start_iterator, end_iterator);

Här är ett kort exempel för ovanstående metod:

omvänd (arr, arr + 5);
för (int i = 0; i <5; i ++) {
cout << arr [i] << "";
}

Produktion:

4 1 9 2 6

* min_element () och * max_element ()

Funktionerna * max_element () och * min_element () returnera max- och minimivärde i den angivna datastrukturen. Båda dessa funktioner accepterar två argument: start-iteratorn och slut-iteratorn.

Syntax:

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

Låt oss ta reda på vilka värden dessa funktioner returnerar när vi anropar dem i exempelmatrisen:

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

Produktion:

9
1

binär_sökning ()

De binär_sökning () metoden används för att hitta om det angivna värdet finns i datastrukturen eller inte. Det accepterar tre argument: start-iteratorn, slut-iteratorn och det värde som du vill hitta.

Binär sökning fungerar bara på sorterade datastrukturer. Därför måste du ringa sortera() metoden först före binär_sökning () metod.

Syntax:

binary_search (start_iterator, end_iterator, value_to_find)

Här är en demonstration av denna metod:

sortera (arr, arr + 5);
binary_search (arr, arr + 5, 2)? cout << "Element hittat": cout << "Element hittades inte";
binary_search (arr, arr + 5, 7)? cout << "Element hittat": cout << "Element hittades inte";

Produktion:

Element hittat
Element hittades inte

räkna()

De räkna() metoden returnerar antalet förekomster av det angivna värdet i datastrukturen. Det krävs tre argument: start-iteratorn, slut-iteratorn och värdet som ska räknas.

Syntax:

räkna (start_iterator, end_iterator, value_to_count);

Här är ett exempel på den här metoden:

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

Produktion:

1

Behållare i STL

Behållare är datastrukturerna som lagrar objekt och data. Vektorer, listor, staplar, köer, uppsättningar och kartor är några av de exempel som lagrar data i dem enligt den angivna primitiva datatypen. Du kan använda dessa behållare genom att importera respektive rubriker i C ++ - filen.

Medan du initialiserar containervariabeln måste du nämna de primitiva data som int, röding, sträng inuti <> fästen.

Låt oss utforska några av dessa behållare mer detaljerat:

Vektor

Vektorer är dynamiska matriser som är anpassningsbara och flexibla att arbeta med. När du infogar eller tar bort ett element från vektorn justerar det automatiskt vektorn. Detta liknar ArrayList datastruktur i Java.

Syntax:

#omfatta 
vektor variabel_namn;

Här är några viktiga vektormetoder:

  1. push_back (värde): Denna metod bifogar data till vektorn.
  2. pop_back (): Denna metod tar bort det sista elementet från vektorn.
  3. infoga (index, värde): Den här metoden infogar nya element före elementet på den angivna positionen.
  4. storlek(): Den här metoden returnerar storleken på vektorn.
  5. tömma(): Denna metod kontrollerar om vektorn är tom eller inte.
  6. främre(): Den här metoden returnerar det första värdet på vektorn.
  7. tillbaka(): Tillbaka-metoden returnerar det sista värdet av vektorn.
  8. vid (index): Den här metoden returnerar värdet på den angivna positionen.
  9. radera (index): Raderingsmetoden tar bort element från det angivna indexet.
  10. klar(): Den här metoden rensar alla objekt i vektorn.
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 << "Storleken på den givna vektorn" << v.size () << endl;
if (v.empty ()) {
cout << "Vektorn är tom" << endl;
} annat {
cout << "Vektorn är inte tom" << endl;
}
cout << "Element vid första position är" << v.front () << endl;
cout << "Element vid den sista positionen är" << v.back () << endl;
cout << "Element vid given position är" << v.at (4) << endl;
v.erase (v.begin () + 1);
för (int i = 0; i cout << v [i] << "";
}

Produktion:

Storleken på den givna vektorn 6
Vektor är inte tom
Element vid första position är 23
Element vid den sista positionen är 5
Element vid given position är 10
23 12 56 10 5

I kodatastrukturen infogas element bakifrån och raderas från framsidan. Därför följer det FIFO-metoden ("först in, först ut").

Syntax:

#omfatta 
variabel_namn;

Här är några viktiga kömetoder:

  1. tryck (värde): Den här metoden lägger till element i kön.
  2. pop(): Den här metoden tar bort det första elementet i kön.
  3. storlek(): Den här metoden returnerar storleken på kön.
  4. främre(): Den här metoden returnerar det första elementet i kön.
  5. tillbaka(): Den här metoden returnerar det sista elementet i kön.
 q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "Det första elementet är" << q.front () << endl;
cout << "Det sista elementet är" << q.back () << endl;
cout << "Köns storlek är" << q.size () << endl;
q.pop ();
cout << "Skriva ut alla element i kön" << endl;
medan (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

Produktion:

Det första elementet är 30
Det sista elementet är 70
Köns storlek är 5
Skriva ut alla element i kön
40 50 60 70

Stack

Stackbehållare fungerar på LIFO-metoden. LIFO står för "sista in, först ut". Data skjuts och poppar från samma ände.

Syntax:

#omfatta 
stack variabel_namn;

Här är några viktiga stackmetoder:

  1. tryck (värde): Denna metod skjuter elementet i stacken.
  2. pop(): Denna metod tar bort det övre elementet i stacken.
  3. topp(): Den här metoden returnerar värdet för det senast inmatade elementet i stacken.
  4. storlek(): Den här metoden returnerar storleken på stacken.
  5. tömma(): Denna metod kontrollerar om stacken är tom eller inte.
stapla  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "Överst på stapeln innehåller" << s.top () << endl;
s.pop ();
cout << "Överst på stacken efter att ha utfört popoperation:" << s.top () << endl;
cout << "Skriva ut alla element i stacken" << endl;
medan (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

Produktion:

Överst på stapeln innehåller 60
Överst på stacken efter pop-operation: 50
Skriva ut alla element i stacken
50 40 30

Uppsättning

Ange behållare används för att hålla unika värden och värdet på elementet kan inte ändras när det har införts i uppsättningen. Alla element i uppsättningen lagras på ett sorterat sätt. Den inställda behållaren liknar ställa in datastruktur i Python.

Syntax:

#omfatta 
uppsättning variabel_namn;

Här är några viktiga metoder:

  1. infoga (värde): Den här metoden infogar element i uppsättningen.
  2. Börja(): Den här metoden returnerar iteratorn till det första elementet i uppsättningen.
  3. slutet(): Den här metoden återställer iteratorn till det sista elementet i uppsättningen.
  4. storlek(): Den här metoden returnerar storleken på uppsättningen.
  5. tömma(): Denna metod kontrollerar om uppsättningen är tom eller inte.
  6. hitta (värde): Den här metoden returnerar iteratorn till det element som skickats i parametern. Om elementet inte hittas återgår denna funktion iteratorn till slutet av uppsättningen.
  7. radera (värde): Den här metoden raderade det angivna elementet från uppsättningen.
ställa in  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örsta position" << * i << endl;
cout << "Storleken på uppsättningen" << s.size () << endl;
s.find (20)! = s.end ()? cout << "Element hittat" << endl: cout << "Element hittades inte <s.erase (30);
cout << "Skriva ut alla element" << endl;
för (auto i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

Produktion:

Element vid första position 20
Setets storlek 5
Element hittat
Skriva ut alla element
20 40 50 60

C ++ behöver inte vara svårt

Precis som alla andra färdigheter är övning viktigt för att få ut det mesta av STL. Dessa behållare och algoritmer kan hjälpa dig att spara mycket tid och är lätta att använda. Börja med att öva på exemplen som visas ovan så kommer du så småningom att börja använda det också i dina egna projekt.

Men om det här är din första gången du lär dig C ++, börja med att lära dig grunderna innan du fortsätter att förstå STL.

E-post
Så här lär du dig C ++ programmering: 6 platser för att komma igång

Vill du lära dig C ++? Här är de bästa webbplatserna och online-kurserna till C ++ för både nybörjare och erfarna programmerare.

Läs Nästa

Relaterade ämnen
  • Programmering
  • Kodningshandledning
  • Funktionell programmering
Om författaren
Nitin Ranganath (22 artiklar publicerade)

Nitin är en ivrig programutvecklare och en datorteknikstudent som utvecklar webbapplikationer med JavaScript-teknik. Han arbetar som frilansande webbutvecklare och gillar att skriva för Linux och programmering på fritiden.

Mer från Nitin Ranganath

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.