Introduktion til Iterator i C ++

At køre gennem dine meget komplekse data, der er gemt i forskellige typer containere, såsom en Array, Vector osv. I den mindste udførelsestid, er mulig på grund af Iterator i C ++, en komponent i Standard Template Library (STL). Bare rolig, det er bare en markør som et objekt, men det er smart, fordi det ikke betyder noget, hvilken container du bruger, det vil gøre din algoritme uafhængig af containertype ved at tilvejebringe en fælles grænseflade til alle typer containere som en bro mellem algoritme og container. Iterator reducerer ikke kun kompleksiteten af ​​et program, i stedet gør udførelsestiden meget hurtigere.

F.eks. Udfører sorteringsalgoritmen, der har to parametre, der slutter og starter iterator, sorteringen i rækkefølge uanset hvilken type beholder du bruger. Iterator tillader anvendelse af generiske algoritmer til datastrukturer. Datastrukturer kan bruge en Iterator til at eksponere en række elementer.

Betjening ved hjælp af Iterator

  • begynde (): Denne funktion returnerer en iterator, der peger på det første element i beholderen.
  • slut (): Denne funktion returnerer en iterator, der peger til det sidste element i beholderen.
  • forskud (): Denne funktion øger en iteratorposition til det specificerede argument.
  • næste (): Denne funktion returnerer den nye iterator, der vil blive peget af iteratoren, efter at positionerne er steget i argumenterne.
  • forrige (): Denne funktion returnerer den nye iterator, der vil blive peget af iteratoren efter dekrementering af positionerne i argumenterne.
  • inserter (): Denne funktion indsætter elementet i enhver position i beholderen.

Praktisk implementering

1. C ++ -kode til implementering af Iterator

Kode

#include
#include
#include
using namespace std;
int main()
(
//Declaring a Vector
std::vector v(1, 2, 3, 4, 5, 6, 7);
//Declaring Iterator
vector::iterator i;
//Function for iterating through vector elements
for(i=v.begin();i!=v.end();i++)
(
std::cout << *i <<" ";
)
return 0;
)

Produktion:

2. C ++ -kode for at vise iteratorfunktionalitet

Kode

#include
#include
#include
using namespace std;
int main()
(
//Declaring a Vector
vector v(1, 2, 3, 4, 5, 6, 7, 8);
//Declaring Iterator
vector::iterator i;
//Function
v.insert(v.begin()+1, 10);
for(i=v.begin();i!=v.end();i++) (
cout << *i <<" ";
)
return 0;
)

Produktion:

Iterator-kategorier

Fra og med C ++ 17 er der 5 forskellige typer Iteratorer, der kan klassificeres afhængigt af typen af ​​funktionalitet som vist i flowchart nedenfor:

  • Input Iterator (stdin) : På grund af begrænset funktionalitet er de svagest af alle iteratorer med skrivebeskyttet og fremadrettet funktionalitet. Det kan ikke ændre containerværdien. Dereferenceoperatør (*), Ikke lige operatør (! =), Inkrementoperator (++) og Equal operator (==) kan bruges som input iteratorer. Også til sekventielle input operationer.
  • Outputterterator (stdout): Iterator kun til opbevaring, skrivende iterator, der bruges til at ændre værdien af ​​en container. De har også meget begrænset funktionalitet. Iterator har ikke adgang til elementet. Tildelingsoperatøren (=) og inkrementoperatøren (++) kan bruges som output iteratorer. Kun i en enkeltpas algoritme.
  • Forward Iterator (enkeltvist linket liste): Denne Iterator indeholder funktionaliteten for både input- og outputterteratorer. Det kan bevæge sig fremad i retning med et trin ad gangen. Til læsning og skrivning til en container er det den mest foretrukne iterator, der understøtter genbrug og gemme. Det understøtter alle ovennævnte operatører.
  • Bidirektional Iterator (dobbeltkædet liste): Som navnet allerede antyder tovejs, hvilket gør det stærkere end ovennævnte iteratorer. Det understøtter også læsning og skrivning til en container. Det understøtter Decrement-operatøren (-).
  • Random Access Iterator (arrays): Stærkeste iterator er den mest kraftfulde iterator, da den kan læse, skrive og få adgang tilfældigt. Pegeren kan lide funktionalitet som pointer tilføjelse og subtraktion.

Fordele ved Iterator i C ++

Hvis du er nødt til at flytte fra et element, at iterator i øjeblikket peger på et andet element, der potentielt er n skridt væk fra din nuværende iterator. De første fire i hierarkiet vil tage en lineær mængde tid at gøre det, mens en iterator med tilfældig adgang kan gøre det i konstant tid, og det er meget mere fascinerende, fordi det er, hvor tiden gemmes. Det er den vigtigste funktion, som en Iterator leverer. Nogle flere er nævnt nedenfor

  • Kodeeffektivitet: Hvis vi har P-slags containere med data og Q-ting, vi vil gøre med dem, så ender vi med at skrive P * Q-algoritmer. Hvis dataene også er af R forskellige typer, ender vi muligvis med P * Q * R-algoritmen. Så ved at bruge iteratorerne kan vi gøre det i P + Q-algoritmen. Vi sparede 90% af tiden og arbejdet. At tage effektiviteten af ​​koden til det næste niveau. Konceptet bag effektiviteten er, at input iterator over source og output iterator over målsekvensen ikke behøver at være af samme type.
  • Dynamisk behandling: Iteratorer har dynamiske funktionaliteter såsom at bytte i den samme beholder, kopi-tildelbar, inkrementering, dereferencing og decrementing. Iteratoren giver funktionaliteten til at fjerne og dynamisk tilføje elementer til containeren. Da alle iteratorer kan øges, kan input-iteratorer sammenlignes og henferenser til en værdi. Tovejs iteratorer kan dekrementeres. Hovedaspektet er at skrive en funktion og bruge den til enhver beholder.

Ulemper ved Iterator i C ++

  • Du kan ikke flytte fra en datastruktur til en anden på samme tid på en eller anden kompleks måde. Iterator fungerer ikke i dette tilfælde.
  • Hvis du behandler gennem en liste, og du har glemt noget, og nu vil du gå tilbage, kan du ikke, fordi iteratorer ikke fungerer på den måde.
  • I tilfælde af at du har brug for at opdatere struktur under gennemkørsel, kan du ikke gøre det også på grund af iteratorens måde at gemme sin position på.

Konklusion

Mens du bruger iteratorer, skal du altid huske disse to ting for at gøre koden effektiv. Før iteratoren altid i en funktion i stedet for containere. Du skal aldrig returnere containere i stedet for returnere eller passere iterator. Du kan få ethvert element ved hjælp af en iterator, dereference og overføre et par af iteratoren til en algoritme

Anbefalede artikler

Dette er en guide til Iterator i C ++. Her diskuterer vi operationer i iteratoren, kategorier, fordele og ulemper med koder og output. Du kan også gennemgå vores andre relaterede artikler for at lære mere-

  1. Arrays i C ++
  2. Hvad er C ++
  3. C ++ Array-funktioner
  4. Sløjfer i C ++
  5. PHP Array-funktioner | Typer af array-funktioner i PHP

Kategori: