Úvod do Iterátora v C ++

Prejdite si svoje vysoko komplexné údaje uložené v rôznych typoch kontajnerov, napríklad v poli, vektore atď., V čo najkratšom čase vykonávania, pretože Iterator v C ++ je súčasťou štandardnej šablónovej knižnice (STL). Nerobte si starosti, je to iba ukazovateľ ako objekt, ale je to inteligentné, pretože nezáleží na tom, aký kontajner používate, vďaka čomu bude váš algoritmus nezávislý od typu kontajnera tým, že poskytne spoločné rozhranie pre všetky typy kontajnerov, napríklad most medzi algoritmus a kontajner. Iterátor nielenže znižuje zložitosť programu, ale zvyšuje aj čas vykonávania.

Napríklad algoritmus sort (), ktorý má dva parametre, koncový a začiatočný iterátor, vykoná zoradenie bez ohľadu na typ kontajnera, ktorý používate. Iterátor umožňuje použitie všeobecných algoritmov na dátové štruktúry. Dátové štruktúry môžu pomocou Iterátora odhaliť celý rad prvkov.

Operácie využívajúce Iterátor

  • begin (): Táto funkcia vráti iterátor smerujúci k prvému prvku kontajnera.
  • end (): Táto funkcia vráti iterátor smerujúci do minulosti posledného prvku kontajnera.
  • advance (): Táto funkcia zvýši pozíciu iterátora k zadanému argumentu.
  • next (): Táto funkcia vráti nový iterátor, ktorý bude označený iterátorom po zvýšení pozícií v argumentoch.
  • previous (): Táto funkcia vráti nový iterátor, ktorý bude označený iterátorom po znížení pozícií v argumentoch.
  • insertter (): Táto funkcia vloží prvok do ľubovoľnej polohy v kontajneri.

Praktická implementácia

1. C ++ kód na implementáciu Iterátora

kód

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

Výkon:

2. C ++ kód na zobrazenie funkčnosti iterátora

kód

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

Výkon:

Kategórie Iterátora

Od C ++ 17 existuje 5 rôznych typov Iterátorov, ktoré možno klasifikovať v závislosti od typu funkčnosti, ako je to znázornené v vývojovom diagrame nižšie:

  • Vstupný Iterátor (stdin) : Z dôvodu obmedzenej funkčnosti sú najslabšími zo všetkých iterátorov s funkciou iba na čítanie a dopredu. Nemôže zmeniť hodnotu kontajnera. Ako vstupné iterátory sa môžu použiť operátor dereferencie (*), nerovnaký operátor (! =), Operátor prírastku (++) a operátor Equal (==). Tiež pre postupné vstupné operácie.
  • Výstupný Iterátor (stdout): Iterátor iba na ukladanie, iterátor iba na zápis, ktorý sa používa na úpravu hodnoty kontajnera. Majú tiež veľmi obmedzenú funkčnosť. Iterátor nemá prístup k prvku. Operátor priradenia (=) a Operátor prírastku (++) sa môžu použiť ako iterátory výstupu. Iba v algoritme jedného priechodu.
  • Forward Iterator (samostatne prepojený zoznam): Tento Iterator obsahuje funkčnosť vstupných aj výstupných Iterátorov. Môže sa pohybovať vpred v jednom smere po jednom. Na čítanie a zápis do kontajnera je to najvýhodnejší iterátor, ktorý podporuje opakované použitie a ukladanie. Podporuje všetkých vyššie uvedených operátorov.
  • Obojsmerný Iterátor (dvojnásobne prepojený zoznam): Ako už názov napovedá, je obojsmerný, vďaka čomu je silnejší ako vyššie uvedené iterátory. Podporuje tiež čítanie a zápis do kontajnera. Podporuje operátor Decrement (-).
  • Iterátor s náhodným prístupom (polia): Najsilnejší iterátor je najsilnejší iterátor, pretože dokáže čítať, zapisovať a má prístup k náhodným údajom. Funkcie podobné ukazovateľu, ako je sčítanie a odčítanie ukazovateľa.

Výhody Iterátora v C ++

Ak potrebujete prejsť od jedného prvku, ktorý iterátor momentálne ukazuje na iný prvok, ktorý je potenciálne n krokov od vášho aktuálneho iterátora. Prví štyria v hierarchii to budú potrebovať lineárny čas, zatiaľ čo iterátor s náhodným prístupom to dokáže v konštantnom čase a to je omnoho fascinujúcejšie, pretože to je miesto, kde sa šetrí čas. Je to najdôležitejšia vlastnosť, ktorú poskytuje Iterátor. Niektoré z nich sú uvedené nižšie

  • Efektivita kódu: Ak máme P druhy kontajnerov údajov a vecí Q, ktoré s nimi chceme robiť, nakoniec napíšeme algoritmy P * Q. Ak sú údaje tiež R rôznych typov, potom by sme mohli skončiť s P * Q * R algoritmom. Takže pomocou iterátorov to môžeme urobiť v algoritme P + Q. Ušetrili sme 90% času a práce. Posúvanie účinnosti kódu na ďalšiu úroveň. Koncept za účinnosťou je, že vstupný iterátor nad zdrojom a výstupný iterátor nad cieľovou sekvenciou nemusia byť rovnakého typu.
  • Dynamické spracovanie: Iterátory majú dynamické funkcie, ako je napríklad výmena v rovnakom kontajneri, kopírovanie, zvyšovanie, dereferencovanie a znižovanie. Iterátor poskytuje funkčnosť na odstránenie a dynamické pridanie prvkov do kontajnera. Pretože všetky iterátory sa môžu zvyšovať, vstupné iterátory možno porovnávať a dereferencovať na určitú hodnotu. Obojsmerné iterátory sa môžu znižovať. Hlavným aspektom je napísať jednu funkciu a použiť ju pre akýkoľvek kontajner.

Nevýhody Iterátora v C ++

  • Z jednej dátovej štruktúry do druhej sa nemôžete súčasne zložitým spôsobom presúvať. Iterátor v tom prípade nebude fungovať.
  • Ak spracovávate zoznam a zabudli ste na niečo a teraz sa chcete vrátiť, nemôžete, pretože iterátory nebudú fungovať týmto spôsobom.
  • V prípade, že potrebujete aktualizovať štruktúru počas prechádzania, nemôžete to urobiť ani z dôvodu iteračného spôsobu uloženia svojej pozície.

záver

Pri používaní iterátorov majte vždy na pamäti tieto dve veci, aby bol kód efektívny. Iterátor vždy odovzdajte do funkcie namiesto kontajnerov. Namiesto vrátenia alebo odovzdania iterátora by ste nikdy nemali vracať kontajnery. Ktorýkoľvek prvok môžete získať pomocou iterátora, dereferencie a odovzdania dvojice iterátora algoritmu

Odporúčané články

Toto je sprievodca Iterátorom v C ++. Tu diskutujeme operácie v iterátore, kategórie, výhody a nevýhody s kódmi a výstupmi. Viac informácií nájdete aj v ďalších súvisiacich článkoch.

  1. Polia v C ++
  2. Čo je C ++
  3. Funkcie poľa C ++
  4. Slučky v C ++
  5. Funkcie PHP poľa Typy funkcií polí v PHP

Kategórie: