Standardmallbiblioteket (STL) är en uppsättning C ++ - mallklasser för att tillhandahålla vanliga programmeringsdatastrukturer och funktioner som listor, staplar, matriser etc. I denna STL i C ++ - artikel kommer vi att diskutera följande pekare:
Fortsätter med den här artikeln om STL i C ++
C ++ mallar
C ++ ger oss en mallfunktion som gör att funktioner och klasser kan användas med generiska typer. Detta möjliggör återanvändning av en funktion eller klass och gör att den kan arbeta på många olika datatyper utan att skrivas om för var och en.
Fortsätter med den här artikeln om STL i C ++
Generiska funktioner och STL
Under programmeringen många gånger finns det ett behov av att skapa funktioner som utför samma operationer men som arbetar med olika datatyper. Så för att övervinna detta problem tillhandahåller C ++ en funktion för att skapa en enda generisk funktion istället för många funktioner som kan fungera med olika datatyper genom att använda mallparametern. Samlingen av dessa generiska klasser och funktioner kallas STL (Standard Template Library)
Komponenterna i STL som nu ingår i standard C ++ - biblioteket definieras i namnområdet std. Vi måste därför använda direktivet som använder namnområdet för att importera dem till vårt program.
Syntax:
Använda namespace std
php mysql_fetch_
STL har tre komponenter
Behållare
Algoritmer
Iteratorer
Dessa tre komponenter arbetar tillsammans med varandra för att ge stöd till en mängd olika programmeringslösningar. Algoritmen använder iteratorer för att utföra operation lagrad i containrar.
En container är ett objekt som lagrar data i minnet på ett organiserat sätt. Behållarna i STL implementeras av mallklasser och kan därför enkelt modifieras och anpassas för att innehålla olika typer av data.
Ett förfarande som används för att bearbeta data som finns i behållarna definieras som en algoritm. STL innehåller många olika typer av algoritmer för att ge stöd till uppgifter som att initiera, söka, kopiera, sortera och slå samman, kopiera, sortera och slå samman. Algoritmer implementeras av mallfunktioner.
En iterator kan definieras som ett objekt som pekar på ett element i en behållare. Iteratorer kan användas för att flytta genom innehållet i behållare. Iteratorer hanteras precis som pekare. Vi kan öka eller minska dem. Iteratorer ansluter algoritm med behållare och spelar en nyckelroll i manipuleringen av data som lagras i behållarna.
Fortsätter med den här artikeln om STL i C ++
Behållare
STL definierar tio containrar som är grupperade i tre kategorier.
Behållare | Beskrivning | Rubrikfil | Iterator |
Vektor | Det kan definieras som en dynamisk matris. Det tillåter direkt åtkomst till alla element. | Slumpmässig tillgång | |
Lista | Det är en dubbelriktad linjär lista. Det tillåter insättning och radering var som helst | Dubbelriktad | |
och | Det är en dubbelkö. Tillåter infogningar och raderingar i båda ändarna. Tillåter direkt åtkomst till alla element. | Slumpmässig tillgång | |
uppsättning | Det är en associerad behållare för lagring av unika uppsättningar. Tillåter snabb uppslagning. | Dubbelriktad | |
multiset | Det är en associerad behållare för lagring av icke-unika uppsättningar. | Dubbelriktad | |
Karta | Det är en associerad behållare för lagring av unika nyckel / värdepar. Varje nyckel är associerad med endast ett värde. | Dubbelriktad | |
multikarta | Det är en associerad behållare för lagring av nyckel / värde där en nyckel kan associeras med mer än ett värde (en-till-många-mappning). Det möjliggör en nyckelbaserad uppslagning. | Dubbelriktad | |
stack | En standardstack följer last-in-first-out (LIFO) | Ingen iterator | |
kö | En standardkö följer först-in-först-ut (FIFO) | Ingen iterator | |
prioritet-kö | Det första elementet ut är alltid det högsta prioritetselementet | Ingen iterator |
Sekvensbehållare
Sekvensbehållare lagrar element i linjär ordning. Alla element är relaterade till varandra genom sin position längs linjen. De tillåter införande av element och alla stöder flera operationer på dem.
STL tillhandahåller tre typer av sekvenselement:
- Vektor
- Lista
- och
Associerande behållare:
De är utformade på ett sådant sätt att de kan stödja direkt åtkomst till element med hjälp av tangenter. De är inte sekventiella. Det finns fyra typer av
associerande behållare:
- Uppsättning
- Multiset
- Karta
- Multikarta
Alla ovanstående behållare lagrar data i en struktur som kallas träd vilket underlättar snabbt
sökning, radering och infogning till skillnad från sekventiell. Containerset eller multiset kan lagra olika objekt och tillhandahålla funktioner för att manipulera dem med hjälp av värdena som tangenter.
Och karta eller Multimap används för att lagra objekt i par, en som heter nyckeln och en annan
kallade värdet.
Avledda behållare:
STL tillhandahåller tre härledda behållare, nämligen stack, kö och prioritetskö. Dessa är även kända som containeradaptrar.
Det finns tre typer av härledda behållare:
1.Stack
2. kön
3.Priority_quue
Staplar, kö och prioritetskön kan enkelt skapas från olika sekvensbehållare. De härledda behållarna stöder inte iteratorer och därför kan vi inte använda dem för datamanipulation. De stöder dock tvåmedelsfunktionen pop () och push () för att implementera raderings- och infogningsoperationer.
Fortsätter med den här artikeln om STL i C ++
Algoritmer
Algoritmer är funktioner som generellt kan användas i olika behållare för bearbetning av innehållet. Även om varje container har funktioner för sina grundläggande operationer, tillhandahåller STL mer än sextio standardalgoritmer för att stödja mer utökade eller komplexa operationer. Standardalgoritmer tillåter oss också att arbeta med två olika typer av containrar samtidigt.
STL-algoritmer förstärker filosofin om återanvändbarhet. Genom att använda dessa algoritmer kan programmerare spara mycket tid och ansträngning. För att få tillgång till STL-algoritmerna måste vi inkludera i vårt program.
STL-algoritm, baserat på typen av operationer de utför, kan kategoriseras som under:
Icke-muterande algoritmer
Muterande algoritmer
Sorteringsalgoritmer
Ställ in algoritmer
Relationsalgoritm
Fortsätter med den här artikeln om STL i C ++
Iteratorer:
Iteratorer fungerar som pekare och används för att komma åt element i containern. Vi använder iteratorer för att flytta genom innehållet i behållare. Iteratorer hanteras precis som pekare. Vi kan öka eller minska dem enligt våra krav. Iteratorer ansluter behållare med algoritmer och spelar en viktig roll i manipuleringen av data som lagras i behållarna. De används ofta för att passera från ett element till ett annat, denna process kallas iterera genom behållaren.
hur man konverterar från dubbel till int Java
Det finns fem typer av iteratorer:
1.Inmatning
2. utgång
3. framåt
4. dubbelriktad
5. slump
Iterator | Åtkomstmetod | Riktning av rörelse | I / O-kapacitet | Anmärkning |
Inmatning | Linjär | Endast framåt | Skrivskyddad | Kan inte sparas |
Produktion | Linjär | Endast framåt | Skriv bara | Kan inte sparas |
Fram | Linjär | Endast framåt | Läsa skriva | Kan sparas |
Dubbelriktad | Linjär | Framåt och bakåt | Läsa skriva | Kan sparas |
Slumpmässig | Slumpmässig | Framåt och bakåt | Läsa skriva | Kan sparas java splitsträng flera avgränsare |
Olika typer av iteratorer måste användas med de olika typerna av containrar så att endast
sekvens och associerande behållare får resa genom iteratorer. Varje typ av iteratorer används för att utföra vissa funktioner. Ingångs- och utgångs-iteratorerna stöder de minsta funktionerna. De kan endast användas för att passera i en container. De framåtriktade iteratorerna stöder alla operationer av in- och utdata iteratorer och behåller också sin position i behållaren. En dubbelriktad iterator ger stöd för all framåtriktad operation men ger möjlighet att röra sig bakåt i behållaren.
Således har vi kommit till ett slut på den här artikeln om ”STL i C ++”. Om du vill veta mer, kolla in av Edureka, ett pålitligt online-lärande företag. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för att träna dig för både grundläggande och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.
Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på den här bloggen så kommer vi tillbaka till dig så snart som möjligt.