Uvod v Iterator v C ++

Potovanje po vaših zelo zapletenih podatkih, shranjenih v različnih vrstah vsebnikov, kot so Array, Vector itd., Je v najmanjšem času izvedbe možno zaradi Iteratorja v C ++, sestavnega dela knjižnice standardnih šablon (STL). Brez skrbi, to je le kazalec, kot je predmet, vendar je pameten, ker ni pomembno, kateri vsebnik uporabljate, bo algoritem postal neodvisen od vrste vsebnika, saj bo zagotovil skupni vmesnik za vse vrste vsebnika, kot je most med algoritem in vsebnik. Iterator ne samo zmanjšuje zahtevnost programa, temveč tudi čas izvajanja veliko hitreje.

Na primer, algoritem sort (), ki ima dva parametra, končni in zagon iterator, bo razvrstil po vrstnem redu, ne glede na vrsto posode, ki jo uporabljate. Iterator omogoča uporabo splošnih algoritmov v strukturah podatkov. Podatkovne strukture lahko s pomočjo Iteratorja razkrijejo vrsto elementov.

Operacije z uporabo Iteratorja

  • begin (): Ta funkcija vrne iterator, ki kaže na prvi element posode.
  • end (): Ta funkcija vrne iterator, ki kaže na preteklost zadnjega elementa vsebnika.
  • перед (): Ta funkcija bo pozicijo iteratorja povečala v podani argument.
  • next (): Ta funkcija bo vrnila novi iterator, ki ga bo opozoril iterator po povečanju pozicij v argumentih.
  • prejšnji (): Ta funkcija bo vrnila novi iterator, ki ga bo opozoril iterator po dekrementu pozicij v argumentih.
  • inserter (): Ta funkcija bo vstavila element na kateri koli položaj v vsebniku.

Praktično izvajanje

1. C ++ koda za izvajanje Iteratorja

Koda

#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;
)

Izhod:

2. Koda C ++ za prikaz funkcionalnosti iteratorja

Koda

#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;
)

Izhod:

Iterator kategorije

Od C ++ 17 je 5 različnih tipov Iteratorjev, ki jih lahko razvrstimo glede na vrsto funkcionalnosti, kot je prikazano v spodnjem diagramu poteka:

  • Vnos Iterator (stdin) : Zaradi omejene funkcionalnosti so najšibkejši od vseh iteratorjev s funkcijo samo za branje in naprej. Ne more spremeniti vrednosti vsebnika. Kot vhodni iteratorji se lahko uporabljajo operator odstranjevanja (*), ni enak operater (! =), Povečevalni operater (++) in enak operator (==). Tudi za zaporedne vhodne operacije.
  • Izhodni iterator (stdout): Iterator samo za shranjevanje iteratorja samo za pisanje, ki se uporablja za spreminjanje vrednosti vsebnika. Imajo tudi zelo omejeno funkcionalnost. Iterator ne more dostopati do elementa. Operater dodeljevanja (=) in operater povečanja (++) se lahko uporabljata kot izhodni iteratorji. Samo v algoritmu z enim prehodom.
  • Posredujoč iterator (posamično povezan seznam): Ta Iterator vsebuje funkcionalnost tako vhodnih kot izhodnih izbirnikov. Z enim korakom se lahko premika naprej v smeri. Za branje in pisanje v vsebnik je najprimernejši iterator, ki podpira ponovno uporabo in shranjevanje. Podpira vse zgoraj naštete operaterje.
  • Dvosmerni Iterator (dvojno povezan seznam): Kot že ime nakazuje dvosmerno, je močnejši od zgornjih iteratorjev. Prav tako podpira branje in pisanje v vsebnik. Podpira operater Decrement (-).
  • Iterator naključnega dostopa (nizi): Najmočnejši iterator je najzmogljivejši iterator, saj lahko bere, piše in lahko dostopa do njega naključno. Kazalcu podobne funkcionalnosti, kot so seštevanje in odštevanje kazalcev.

Prednosti Iteratorja v C ++

Če se morate premakniti iz enega elementa, iterator trenutno kaže na drug element, ki je potencialno n korakov stran od vašega trenutnega iteratorja. Prvim štirim v hierarhiji bo to vzelo linearno toliko časa, medtem ko lahko iterator naključnega dostopa to stori v nenehnem času in je tako bolj fascinanten, saj se tam prihrani čas. To je najpomembnejša lastnost, ki jo Iterator zagotavlja. Spodaj je omenjenih še nekaj

  • Učinkovitost kode: Če imamo P vrste vsebnikov podatkov in Q stvari, ki jih želimo početi z njimi, bomo na koncu napisali algoritme P * Q. Če so podatki tudi različnih vrst R, bomo morda zaključili z algoritmom P * Q * R. Torej z uporabo iteratorjev lahko to storimo v algoritmu P + Q. Prihranili smo 90% časa in dela. Izboljšanje učinkovitosti kode na naslednjo stopnjo. Koncept učinkovitosti je, da iterator vhoda nad izvorom in iterator izhoda v ciljnem zaporedju ne smeta biti iste vrste.
  • Dinamična obdelava: Iteratorji imajo dinamične funkcije, kot so zamenjava v istem vsebniku, prepisovanje, pripisovanje, povečevanje in odpravljanje. Iterator zagotavlja funkcionalnost za odstranjevanje in dinamično dodajanje elementov v vsebnik. Ker je mogoče vse iteratorje povečevati, lahko vhodne iteratorje primerjate in odpravite na vrednost. Dvosmerne iteratorje je mogoče zmanjšati. Glavni vidik je napisati eno funkcijo in jo uporabiti za kateri koli vsebnik.

Slabosti Iteratorja v C ++

  • Ne morete hkrati prehajati iz ene podatkovne strukture v drugo na nek kompleksen način. Iterator v tem primeru ne bo deloval.
  • Če obdelujete seznam in ste nekaj pozabili in se zdaj želite vrniti, potem ne morete, ker iteratorji ne bodo delovali na ta način.
  • V primeru, da boste morali med prehodom prenašati strukturo, tega ne morete storiti tudi zaradi iteratorjevega načina shranjevanja njegovega položaja.

Zaključek

Pri uporabi iteratorjev imejte v mislih te dve stvari, da boste kodo naredili učinkovito. Vedno prenesite iterator v funkcijo namesto posod. Nikoli ne smete vrniti vsebnikov namesto vrnitve ali iteratorja. Vsak element lahko dobite s pomočjo iteratorja, odstranjevanja in podajanje para iteratorja v algoritem

Priporočeni članki

To je vodnik za Iterator v C ++. Tu obravnavamo operacije v iteratorju, kategorije, prednosti in slabosti s kodami in izhodi. Obiščite lahko tudi druge naše sorodne članke, če želite izvedeti več -

  1. Nizi v C ++
  2. Kaj je C ++
  3. C ++ funkcije matrike
  4. Zank v C ++
  5. Funkcije matrike PHP | Vrste funkcij matrike v PHP