STL i c ++: Alt du trenger å vite



Denne artikkelen vil gi deg detaljert og omfattende kunnskap om STL i C ++ og vil også gi deg en ide om de forskjellige containerne.

Standardmalbiblioteket (STL) er et sett med C ++ malklasser for å gi vanlige programmeringsdatastrukturer og funksjoner som lister, stabler, matriser osv. I denne STL i C ++ -artikkelen vil vi diskutere følgende pekere:

Fortsetter med denne artikkelen om STL i C ++





C ++ maler

C ++ gir oss en funksjon av maler som lar funksjoner og klasser fungere med generiske typer. Dette tillater gjenbruk av en funksjon eller klasse og lar den jobbe med mange forskjellige datatyper uten å bli omskrevet for hver enkelt.

Fortsetter med denne artikkelen om STL i C ++



Generiske funksjoner og STL

Mens du programmerer mange ganger, er det behov for å lage funksjoner som utfører de samme operasjonene, men som arbeider med forskjellige datatyper. Så for å overvinne dette problemet gir C ++ en funksjon for å lage en enkelt generisk funksjon i stedet for mange funksjoner som kan fungere med forskjellige datatyper ved å bruke malparameteren. Samlingen av disse generiske klassene og funksjonene heter Standard Template Library (STL)

Komponentene i STL som nå er en del av standard C ++ - biblioteket er definert i navneområdet std. Vi må derfor bruke direktivet om navnerom for å importere dem til vårt program.

Syntaks:



Bruker navneområde std

STL har tre komponenter

  • Beholdere

  • Algoritmer

  • Iteratorer

Disse tre komponentene fungerer sammen med hverandre i synergi for å gi støtte til en rekke programmeringsløsninger. Algoritme benytter iteratorer for å utføre operasjoner lagret i containere.

En container er et objekt som lagrer data i minnet på en organisert måte. Containerne i STL er implementert av malklasser og kan derfor enkelt modifiseres og tilpasses for å inneholde forskjellige typer data.

En prosedyre som brukes til å behandle dataene i containerne er definert som en algoritme. STL inneholder mange forskjellige typer algoritmer for å gi støtte til oppgaver som initialisering, søk, kopiering, sortering og sammenslåing, kopiering, sortering og sammenslåing. Algoritmer implementeres av malfunksjoner.

En iterator kan defineres som et objekt som peker på et element i en container. Iteratorer kan brukes til å flytte gjennom innholdet i containere. Iteratorer håndteres akkurat som pekere. Vi kan øke eller redusere dem. Iteratorer kobler algoritme med containere og spiller en nøkkelrolle i manipulasjonen av data som er lagret i containerne.

Container-STL-in-C++

Fortsetter med denne artikkelen om STL i C ++

Beholdere

STL definerer ti containere som er gruppert i tre kategorier.

Beholdere

Beskrivelse

Topptekstfil

Iterator

Vector

Det kan defineres som et dynamisk utvalg. Det gir direkte tilgang til ethvert element.

Tilfeldig tilgang

Liste

Det er en toveis lineær liste. Det tillater innsetting og sletting hvor som helst

Toveis

og

Det er dobbel kø. Tillater innsetting og sletting i begge ender. Tillater direkte tilgang til ethvert element.

Tilfeldig tilgang

sett

Det er en tilknyttet beholder for lagring av unike sett. Tillater rask oppslag.

Toveis

multisett

Det er en tilknyttet beholder for lagring av ikke-unike sett.

utvalg av klasseobjekter java

Toveis

kart

Det er en tilknyttet beholder for lagring av unike nøkkel / verdipar. Hver nøkkel er bare tilknyttet en verdi.

Toveis

multikart

Det er en tilknyttet beholder for lagring av nøkkel / verdi der en nøkkel kan være assosiert med mer enn én verdi (en-til-mange-kartlegging). Det tillater en nøkkelbasert oppslag.

Toveis

stable

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

Ingen iterator

En standard kø følger først-inn-først-ut (FIFO)

Ingen iterator

prioritetskø

Det første elementet ut er alltid elementet med høyest prioritet

Ingen iterator

Sekvensbeholdere

Sekvensbeholdere lagrer elementer i en lineær rekkefølge. Alle elementene er relatert til hverandre ved deres posisjon langs linjen. De tillater innsetting av element, og alle støtter flere operasjoner på dem.

STL gir tre typer sekvenselementer:

  • Vector
  • Liste
  • og

Associative containere:

De er utformet på en slik måte at de kan støtte direkte tilgang til elementer ved hjelp av nøkler. De er ikke sekvensielle. Det er fire typer

assosiative beholdere:

  1. Sett
  2. Multisett
  3. Kart
  4. Multimap

Alle de ovennevnte beholderne lagrer data i en struktur som kalles tre som letter raskt

søk, sletting og innsetting i motsetning til sekvensiell. Containersett eller multisett kan lagre forskjellige elementer og gi operasjoner for å manipulere dem ved hjelp av verdiene som tastene.

Og kart eller Multimap brukes til å lagre varer i par, den ene kalt nøkkelen og den andre

kalt verdien.

Avledede containere:

STL har tre avledede containere, nemlig stabel, kø og prioritetsvei. Disse er også kjent som containeradaptere.

Det er tre typer avledede containere:

1. Stakk

2. kø

3.Priority_quue

Stabler, kø og prioritetskø kan enkelt opprettes fra forskjellige sekvensbeholdere. De avledede beholderne støtter ikke iteratorer, og derfor kan vi ikke bruke dem til datamanipulering. Imidlertid støtter de to medlemsfunksjon pop () og push () for å implementere sletting og innsetting av operasjoner.

Fortsetter med denne artikkelen om STL i C ++

hvordan du tester en database

Algoritmer

Algoritmer er funksjoner som vanligvis kan brukes på tvers av en rekke containere for behandling av innholdet. Selv om hver container har funksjoner for sine grunnleggende operasjoner, gir STL mer enn seksti standardalgoritmer for å støtte mer utvidede eller komplekse operasjoner. Standardalgoritmer tillater oss også å jobbe med to forskjellige typer containere samtidig.

STL-algoritmer forsterker filosofien om gjenbrukbarhet. Ved å bruke disse algoritmene kan programmerere spare mye tid og krefter. For å få tilgang til STL-algoritmene, må vi inkludere i programmet vårt.

STL-algoritme, basert på arten av operasjoner de utfører, kan kategoriseres som under:

  • Ikke-muterende algoritmer

  • Muterende algoritmer

  • Sorteringsalgoritmer

  • Sett algoritmer

  • Relasjonsalgoritme

Fortsetter med denne artikkelen om STL i C ++

Iteratorer:

Iteratorer fungerer som pekere og brukes til å få tilgang til elementer i containeren. Vi bruker iteratorer for å flytte gjennom innholdet i containere. Iteratorer håndteres akkurat som pekere. Vi kan øke eller redusere dem i henhold til våre krav. Iteratorer kobler containere med algoritmer og spiller en viktig rolle i manipuleringen av data som er lagret i containerne. De brukes ofte til å passere fra ett element til et annet, denne prosessen kalles iterering gjennom beholderen.

Det er fem typer iteratorer:

1. inngang

2. utgang

3. fremover

4. toveis

5. tilfeldighet

Iterator

Tilgangsmetode

Bevegelsesretning

I / O-mulighet

Bemerke

Inngang

Lineær

Bare fremover

Skrivebeskyttet

Kan ikke lagres

Produksjon

Lineær

Bare fremover

Skriv bare

Kan ikke lagres

Framover

Lineær

Bare fremover

Les Skriv

Kan reddes

Toveis

Lineær

Fremover og bakover

Les Skriv

Kan reddes

Tilfeldig

Tilfeldig

Fremover og bakover

Les Skriv

Kan reddes

Ulike typer iteratorer må brukes med de forskjellige typer containere slik at bare

sekvens og assosierende containere får reise gjennom iteratorer. Hver type iteratorer brukes til å utføre visse funksjoner. Input og output iteratorene støtter de minste funksjonene. De kan bare brukes til å passere gjennom i en container. Forward iteratorene støtter all operasjon av input og output iteratorer og beholder også sin posisjon i containeren. En toveis iterator, mens den støtter all fremover iteratoroperasjon, gir muligheten til å bevege seg bakover i containeren.

Dermed har vi kommet til en slutt på denne artikkelen om ‘STL i C ++’. Hvis du ønsker å lære mer, sjekk ut av Edureka, et pålitelig online læringsfirma. Edurekas Java J2EE- og SOA-opplærings- og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.