Iteratorer
En iterator fungerer som en peker som indikerer elementene inne i listen. Iteratorer brukes hovedsakelig til å bevege seg gjennom dataene i en liste. Iteratorer brukes også til å indikere minneadressen til containerne. I denne artikkelen blir noen operasjoner av iteratorer forklart.
Begynne()
Denne BEGIN () -funksjonen har en iterator som returneres med verdien som viser det første elementet. Det er ganske annerledes enn iteratorens front ().
Slutt()
Den returnerer en iterator som peker mot det siste elementet i listen.
Avansere()
Dette er en viktig operasjon da den brukes til å øke iteratorens posisjon til det spesifiserte nummeret som er nevnt i parameteren.
Neste ()
Denne funksjonen returnerer den nye iteratoren etter at den har avansert sin posisjon, som er nevnt i argumentet.
Tidligere ()
Dette er funksjonen som brukes til å bringe den nye iteratoren som viser verdien som er redusert til det beskrevne nummeret på listen.
Innsats ()
Dette er funksjonen som brukes til å sette inn de nye elementene i en hvilken som helst posisjon i listen. Den har to argumenter. Den ene er containernavnet, og den andre er pekeren som viser posisjonen der den nye varen eller varene skal settes inn.
Eksempel 1
Begynn (), slutt ():
Dette eksemplet inneholder kildekoden for å demonstrere arbeidet med disse to funksjonene. Når vi bruker disse funksjonene på listen, brukes biblioteket for listen her i det første trinnet.
#inkludereSå inne i hovedprogrammet erklærer vi en liste med 5 heltall.
ListeNå vil vi vise alt innholdet på listen. Så en for sløyfe brukes. Som vi vet, krever A for Loop et start- og sluttpunkt i Loop -initiativet for å starte sløyfen på listen “Mylist”. Begynn () Funksjon brukes her. Og på slutten, “Mylist. End () ”brukes. 'Mylist' er objektet som brukes til å få tilgang til listen.
Det opprettes en iterator som vil starte og bevege seg til slutten ved å øke i hver sløyfe. For å utføre kildekoden, bruk en G ++ -kompilator for sammenstilling og deretter utførelse av koden. Gå til Linux-terminalen og bruk deretter de nedenfor siterte kommandoene.
$ g ++ -o filfil.c
$ ./fil
Den resulterende verdien vil inneholde alle tallene som vi har lagt inn på listen gjennom hovedprogrammet.
Eksempel 2
Advance ():
Som beskrevet ovenfor, brukes denne funksjonen til å øke iteratoren til et spesifikt antall som er gitt som argument. Vurder nå følgende eksempel der vi har brukt en iteratorklasse med listeklassen, slik at alle funksjonene til iteratorer kan utføres enkelt.
Etter erklæringen om en liste er iteratoren erklært til listen.
Liste“PTR” er et objekt for iteratoren. Denne iteratoren tildeles BEGIN () -funksjonen. Nå må vi hoppe mot det aktuelle punktet, vi vil øke iteratorposisjonen opp til 2, og det gjøres ved å bruke Advance () -funksjonen.
Advance (PTR, 2);
Denne funksjonen tar formålet med iteratoren og nummeret for å vise posisjonen der vi ønsker å skifte iterator. Etter det vises iteratorens plassering på det tidspunktet. Som standard var det på første stilling; Ved å bruke forhånd, nå vil det være på 3.
Lagre kildekoden i filen og kjør den deretter for å se de utførte verdiene.
Eksempel 3: Neste (), Prev ()
Begge iteratorene returneres med verdien når iteratoren er økt og når iteratoren er dekrementert. Posisjonene er nevnt i argumentet, slik de er beskrevet på forhånd () funksjonsparameter. Etter å ha brukt bibliotekene i hovedprogrammet, er listen erklært først i eksemplet. Etter det opprettes iteratorer og erklæres deretter til listen. To separate iteratorer opprettes med forskjellige iteratorpekerobjekter for begge funksjonene.
Først vil vi bruke neste iterator som vil returnere den nye iteratoren som peker mot 4.
Auto IT = Neste (PTR, 3);Iteratoren er automatisk generert og vil ringe neste funksjon med pekeren og nummeret vi ønsker at iteratoren skal økes. Så akkurat som Funksjonen Advance (), vil iteratoren øke mot den gitte posisjonen. Nå er neste trinn å bruke PRED () -funksjonen. Prev () vil også inneholde objektpekeren som er opprettet ovenfor, og nummeret som skal gå tilbake. Denne funksjonen vil returnere en ny iterator som vil peke mot 3.
Auto it1 = prev (ftr, 3);Til slutt vil vi vise posisjonen til nye iteratorer i begge tilfeller. Begge verdiene vises ved å bruke pekerne, da de lagrer posisjonene i listen. Sett sammen koden, og så vil du se at både funksjonene til iteratorer prev () og neste () viser verdiene i listen gjennom kompilatoren.
Eksempel 4
Innsats ()
Som vi har forklart ovenfor, setter denne funksjonen inn den nye verdien i enhver posisjon i listen. Så nå, i eksemplet, erklærer først en liste med 3 antall heltall.
I innsats () kan vi sette inn et enkelt nummer og en liste over tall. Så i dette eksemplet vil vi sette inn en liste over tre tall i listen vi har opprettet ovenfor. Opprett en iterator og erklær den til listen vi har opprettet. Siden vi må sette inn den nye listen på et bestemt sted, må vi øke iteratoren i den posisjonen. Og dette gjøres ved å bruke Advance () iterator.
Advance (PTR, 2);
Det vil øke iteratoren til 2. plassering; Det betyr etter 2, den nye listen vil bli satt inn. Så ved hjelp av objekter vil elementer i en liste kopiere inn i den andre listen. Vi vil bruke en kopifunksjon her.
Kopi (AR1.Begynn (), AR1. end (), innsats (ar, ptr));Kopieringsfunksjonen vil bruke BEGIN () og END (), for å begynne å kopiere elementene fra starten av den andre listen og fortsette å kopiere til slutten av listen. Inserster -funksjonen tar objektet med den første listen og iteratorobjektet for å påpeke posisjonen der listen må settes inn.
For å vise alle elementene, vil vi bruke en for loop.
De resulterende verdiene som er hentet fra utførelsen av koden ovenfor viser at den første listen inneholder tallene på begge listene.
Konklusjon
'List Iterator C' er artikkelen som inneholder informasjonen angående hvilke typer artikler som vi brukte på listen. Alle disse operasjonene er forklart med den grunnleggende beskrivelsen. Vi har også sitert noen eksempler for hver funksjon av iteratoren. Disse eksemplene er implementert i Linux -operativsystemet ved hjelp av tekstredigereren og Linux -terminalen.