STL i c ++: Alt hvad du behøver at vide

Denne artikel vil give dig en detaljeret og omfattende viden om STL i C ++ og vil også give dig en idé om de forskellige containere.

Standardskabelonbiblioteket (STL) er et sæt C ++ - skabelonklasser, der giver almindelige programmeringsdatastrukturer og -funktioner såsom lister, stakke, arrays osv. I denne STL i C ++ -artikel vil vi diskutere følgende markører:



Fortsætter med denne artikel om STL i C ++



C ++ skabeloner

C ++ giver os en funktion af skabeloner, der gør det muligt for funktioner og klasser at fungere med generiske typer. Dette muliggør genanvendelighed af en funktion eller klasse og gør det muligt at arbejde på mange forskellige datatyper uden at blive omskrevet til hver enkelt.

Fortsætter med denne artikel om STL i C ++



Generiske funktioner og STL

Under programmering mange gange er der behov for at oprette funktioner, der udfører de samme operationer, men som arbejder med forskellige datatyper. Så for at overvinde dette problem giver C ++ en funktion til at oprette en enkelt generisk funktion i stedet for mange funktioner, der kan arbejde med forskellige datatyper ved hjælp af skabelonparameteren. Samlingen af ​​disse generiske klasser og funktioner kaldes STL (Standard Template Library)

Komponenterne i STL, som nu er en del af standard C ++ - biblioteket, er defineret i navneområdet std. Vi skal derfor bruge direktivet om navneområdet til at importere dem til vores program.

Syntaks:



Brug af namespace std

STL har tre komponenter

  • Beholdere

  • Algoritmer

  • Iteratorer

Disse tre komponenter arbejder sammen med hinanden i synergi for at yde support til en række programmeringsløsninger. Algoritme anvender iteratorer til at udføre operation lagret i containere.

En container er et objekt, der gemmer data i hukommelsen på en organiseret måde. Containerne i STL implementeres af skabelonklasser og kan derfor let modificeres og tilpasses til at indeholde forskellige typer data.

En procedure, der bruges til at behandle dataene i containerne, er defineret som en algoritme. STL inkluderer mange forskellige slags algoritmer, der understøtter opgaver såsom initialisering, søgning, kopiering, sortering og fletning, kopiering, sortering og fletning. Algoritmer implementeres af skabelonfunktioner.

En iterator kan defineres som et objekt, der peger på et element i en container. Iteratorer kan bruges til at bevæge sig gennem indholdet af containere. Iteratorer håndteres ligesom pegepinde. Vi kan øge eller mindske dem. Iteratorer forbinder algoritme med containere og spiller en nøglerolle i manipulationen af ​​data gemt i containerne.

Container-STL-in-C++

Fortsætter med denne artikel om STL i C ++

Beholdere

STL definerer ti containere, der er grupperet i tre kategorier.

Beholdere

Beskrivelse

Sidehovedfil

Iterator

Vektor

Det kan defineres som et dynamisk array. Det giver direkte adgang til ethvert element.

Tilfældig adgang

Liste

Det er en tovejs lineær liste. Det tillader indsættelse og sletning hvor som helst

Tovejs

og

Det er en kø med dobbelt ende. Tillader indsættelse og sletning i begge ender. Tillader direkte adgang til ethvert element.

Tilfældig adgang

sæt

hvad er en sqlite-browser

Det er en associeret container til opbevaring af unikke sæt. Tillader hurtig opslag.

Tovejs

multisæt

Det er en tilknyttet container til opbevaring af ikke-unikke sæt.

Tovejs

kort

Det er en tilknyttet container til lagring af unikke nøgle / værdipar. Hver nøgle er kun knyttet til en værdi.

Tovejs

multimap

Det er en tilknyttet beholder til lagring af nøgle / værdi, hvor en nøgle kan være knyttet til mere end en værdi (en-til-mange-kortlægning). Det giver mulighed for en nøglebaseret opslag.

Tovejs

stak

En standardstak følger last-in-first-out (LIFO)

Ingen iterator

En standard kø følger først-ud-først ud (FIFO)

Ingen iterator

prioritetskø

Det første element ud er altid det højeste prioritetselement

Ingen iterator

Sekvensbeholdere

Sekvensbeholdere gemmer elementer i en lineær rækkefølge. Alle elementer er relateret til hinanden ved deres position langs linjen. De tillader indsættelse af element, og alle understøtter flere operationer på dem.

STL tilvejebringer tre typer sekvenselementer:

  • Vektor
  • Liste
  • og

Associerende containere:

De er designet på en sådan måde, at de kan understøtte direkte adgang til elementer ved hjælp af nøgler. De er ikke sekventielle. Der er fire typer

associerende containere:

  1. Sæt
  2. Multisæt
  3. Kort
  4. Multimap

Alle ovenstående containere gemmer data i en struktur kaldet træ, hvilket letter hurtigt

søgning, sletning og indsættelse i modsætning til sekventiel. Containersæt eller multisæt kan gemme forskellige emner og sørge for operationer til manipulation med dem ved hjælp af værdierne som tasterne.

Og kort eller Multimap bruges til at gemme varer i par, den ene kaldes nøglen og den anden

kaldte værdien.

Afledte containere:

STL tilvejebringer tre afledte containere, nemlig stak, kø og prioritetskø. Disse er også kendt som containeradaptere.

Der er tre typer afledte containere:

1. Stak

2. kø

3. prioritet_quue

Stakke, kø og prioritetskø kan let oprettes fra forskellige sekvensbeholdere. De afledte containere understøtter ikke iteratorer, og derfor kan vi ikke bruge dem til manipulation af data. De understøtter dog to medlemsfunktion pop () og push () til implementering af sletning og indsættelse af operationer.

Fortsætter med denne artikel om STL i C ++

Algoritmer

Algoritmer er funktioner, der generelt kan bruges på tværs af en række containere til behandling af deres indhold. Selvom hver container indeholder funktioner til sine grundlæggende operationer, leverer STL mere end tres standardalgoritmer til at understøtte mere udvidede eller komplekse operationer. Standardalgoritmer tillader os også at arbejde med to forskellige typer containere på samme tid.

STL-algoritmer styrker filosofien om genanvendelighed. Ved at bruge disse algoritmer kan programmører spare meget tid og kræfter. For at få adgang til STL-algoritmerne skal vi inkludere i vores program.

STL-algoritme, baseret på arten af ​​operationer, de udfører, kan kategoriseres som under:

  • Ikke-muterende algoritmer

  • Muterende algoritmer

  • Sorteringsalgoritmer

  • Indstil algoritmer

  • Relationsalgoritme

Fortsætter med denne artikel om STL i C ++

Iteratorer:

Iteratorer fungerer som pegepinde og bruges til at få adgang til elementer i containeren. Vi bruger iteratorer til at flytte gennem indholdet af containere. Iteratorer håndteres ligesom pegepinde. Vi kan øge eller mindske dem efter vores krav. Iteratorer forbinder containere med algoritmer og spiller en vigtig rolle i manipulationen af ​​data gemt i containerne. De bruges ofte til at passere fra et element til et andet, denne proces kaldes iterering gennem beholderen.

Der er fem typer iteratorer:

1. input

2. output

3. fremad

4. tovejs

5. tilfældighed

Iterator

Adgangsmetode

Bevægelsesretning

I / O-kapacitet

Bemærkning

Indgang

Lineær

Kun fremad

Læs kun

Kan ikke gemmes

Produktion

Lineær

Kun fremad

Skriv kun

Kan ikke gemmes

Frem

Lineær

Kun fremad

Læse skrive

Kan gemmes

Tovejs

Lineær

Frem og tilbage

Læse skrive

Kan gemmes

Tilfældig

Tilfældig

Frem og tilbage

Læse skrive

Kan gemmes

Forskellige typer iteratorer skal bruges med de forskellige typer containere, således at kun

sekvens og associerende containere får lov til at rejse gennem iteratorer. Hver type iteratorer bruges til at udføre bestemte funktioner. Input- og output-iteratorerne understøtter de mindst mulige funktioner. De kan kun bruges til at passere igennem i en container. Forward iteratorerne understøtter alle operationer af input og output iteratorer og bevarer også sin position i containeren. En tovejs iterator, som understøtter alle fremadgående iteratoroperationer, giver dog mulighed for at bevæge sig bagud i containeren.

Således er vi nået til slutningen af ​​denne artikel om 'STL i C ++'. Hvis du ønsker at lære mere, skal du tjekke af Edureka, et betroet online læringsfirma. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.