Uvod u Iterator u C ++

Putovanje kroz vrlo složene podatke pohranjene u različitim vrstama spremnika, kao što su Array, Vector, itd. U najmanjem vremenu izvršenja moguće je zbog Iteratora u C ++, komponente biblioteke standardnih predložaka (STL). Ne brinite, to je samo pokazivač kao objekt, ali pametan je jer nije važno koji spremnik koristite, on će algoritam učiniti neovisnim od tipa spremnika pružajući zajedničko sučelje za sve vrste spremnika, poput mosta između algoritam i spremnik. Iterator ne samo da smanjuje složenost programa, već čini vrijeme izvršenja mnogo bržim.

Na primjer, algoritam sort () koji ima dva parametra, završetak i pokretanje iteratora, izvršit će sortiranje prema redoslijedu bez obzira na vrstu spremnika koji koristite. Iterator omogućuje primjenu generičkih algoritama na strukture podataka. Strukture podataka mogu upotrijebiti Iterator za otkrivanje niza elemenata.

Operacije pomoću iteratora

  • begin (): Ova funkcija vraća iterator koji upućuje na prvi element spremnika.
  • end (): Ova funkcija vraća iterator koji upućuje na prošlost posljednjeg elementa spremnika.
  • napred (): Ova će funkcija uvećati poziciju iteratora na navedeni argument.
  • next (): Ova funkcija vraća novi iterator na koji će ga ukazati iterator nakon povećanja pozicija u argumentima.
  • prethodni (): Ova će funkcija vratiti novi iterator na koji će ga ukazati iterator nakon dekrementacije pozicija u argumentima.
  • umetak (): Ova funkcija umetnut će element u bilo koji položaj u spremniku.

Praktična provedba

1. C ++ kôd za implementaciju Iteratora

Kodirati

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

Izlaz:

2. C ++ kôd za prikaz funkcionalnosti iteratora

Kodirati

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

Izlaz:

Iterator kategorije

Od C ++ 17, postoji 5 različitih vrsta Iteratora koji se mogu klasificirati ovisno o vrsti funkcionalnosti kao što je prikazano na donjem dijagramu tijeka:

  • Ulazni isterač (stdin) : Zbog ograničene funkcionalnosti oni su najslabiji od svih iteratora s funkcijom samo za čitanje i naprijed. Ne može mijenjati vrijednost spremnika. Kao ulazni iteratori mogu se koristiti dereference operator (*), ne jednaki operator (! =), Operater povećanja (++) i jednaki operator (==). Također za postupke uzastopnih unosa.
  • Izlazni iterator (stdout): Iterator samo za pohranjivanje iteratora samo za pisanje koji se koristi za izmjenu vrijednosti spremnika. Oni također imaju vrlo ograničenu funkcionalnost. Iterator ne može pristupiti elementu. Operator dodjele (=) i operater povećanja (++) mogu se koristiti kao izlazni iteratori. Samo u algoritmu s jednim prolazom.
  • Naprijed Iterator (pojedinačno povezan popis): Ovaj Iterator sadrži funkciju i ulaznih i izlaznih isteratora. Može se kretati prema naprijed jednim korakom. Za čitanje i pisanje u spremnik najprikladniji je iterator koji podržava ponovno korištenje i spremanje. Podržava sve gore navedene operatore.
  • Dvosmjerni iterator (dvostruko povezan popis): Kao što naziv već sugerira dvosmjerno, što ga čini jačim od gore navedenih iteratora. Također podržava čitanje i pisanje u spremnik. Podržava operatora Decrement (-).
  • Iterator s nasumičnim pristupom (nizovi): najjači iterator je najmoćniji iterator jer može nasumično čitati, pisati i može pristupiti. Funkcija pokazivača poput dodavanja i oduzimanja pokazivača.

Prednosti Iteratora u C ++

Ako trebate prijeći s jednog elementa, iterator trenutno pokazuje drugi element koji je potencijalno n koraka udaljen od vašeg trenutnog iteratora. Prve četiri u hijerarhiji trebaće linearnu količinu vremena za to, dok iterator slučajnog pristupa može to raditi u stalnom vremenu i to je na taj način fascinantnije jer se tamo štedi vrijeme. To je najvažnija značajka koju Iterator pruža. U nastavku su spomenuti još neki

  • Učinkovitost koda: Ako imamo P vrste spremnika podataka i Q stvari koje želimo raditi s njima, tada ćemo završiti pisanje P * Q algoritama. Ako su podaci također R različitih vrsta, možda ćemo završiti s algoritmom P * Q * R. Dakle, pomoću iteratora to možemo učiniti u algoritmu P + Q. Uštedjeli smo 90% vremena i rada. Podizanje učinkovitosti koda na sljedeću razinu. Koncept iza učinkovitosti je da iterator ulaza nad izvorom i izlazni iterator nad ciljanim nizom ne moraju biti istog tipa.
  • Dinamička obrada: Iteratori imaju dinamičke funkcionalnosti kao što su zamjena u istom spremniku, primjenjivanje kopiranja, povećanje, preusmjeravanje i smanjivanje vrijednosti. Iterator nudi funkciju uklanjanja i dinamičkog dodavanja elemenata u spremnik. Budući da se svi iteratori mogu povećati, ulazni iterator može se uporediti i dereferencirati na vrijednost. Dvosmjerni iteratori mogu se smanjiti. Glavni aspekt je napisati jednu funkciju i koristiti je za bilo koji spremnik.

Nedostaci Iteratora u C ++

  • Ne možete istovremeno prelaziti iz jedne strukture podataka u drugu na neki složen način. Iterator u tom slučaju neće raditi.
  • Ako obrađujete popis i nešto ste zaboravili, a sada se želite vratiti, ne možete jer iteratori neće raditi na taj način.
  • U slučaju da trebate ažurirati strukturu tijekom vožnje, to ne možete učiniti i zbog iteratora za pohranjivanje njezinog položaja.

Zaključak

Za vrijeme korištenja iteratora uvijek imate na umu ove dvije stvari za učinkovitost koda. Uvijek prebacite iterator u funkciju umjesto spremnika. Nikada ne smijete vraćati spremnike umjesto povratka ili prolaziti iterator. Možete dobiti bilo koji element pomoću iteratora, odmakavanja i slanje para iteratora u algoritam

Preporučeni članci

Ovo je vodič za Iterator u C ++. Ovdje raspravljamo o operacijama u iteratoru, kategorijama, prednostima i nedostacima s kodovima i izlazima. Možete i proći kroz naše druge povezane članke da biste saznali više -

  1. Nizi u C ++
  2. Što je C ++
  3. C ++ funkcije matrice
  4. Petlje u C ++
  5. Funkcije niza PHP | Vrste funkcija matrice u PHP-u

Kategorija: