Увод у Итератор у Ц ++

Путовање кроз изузетно сложене податке похрањене у различитим врстама контејнера као што су Арраи, Вецтор итд. У најмањем времену извршења могуће је због Итератора у Ц ++, компоненте библиотеке стандардних шаблона (СТЛ). Не брините, то је само показивач попут објекта, али паметан је јер није важно који контејнер користите, он ће ваш алгоритам учинити неовисним од типа контејнера пружајући заједничко сучеље за све врсте контејнера, попут моста између алгоритам и спремник. Итератор не само да смањује сложеност програма, већ чини време извршења много бржим.

На пример, алгоритам сорт () који има два параметра, крајњи и почетни итератор, вршиће сортирање према редоследу без обзира на врсту контејнера који користите. Итератор омогућава примену генеричких алгоритама на структуре података. Структуре података могу користити Итератор за откривање низа елемената.

Операције помоћу итератора

  • бегин (): Ова функција ће вратити итератор који упућује на први елемент спремника.
  • енд (): Ова функција враћа итератор који упућује на прошлост задњег елемента спремника.
  • напред (): Ова функција ће повећати позицију итератора на наведени аргумент.
  • следећи (): Ова функција ће вратити нови итератор на који ће га указати итератор након увећања позиција у аргументима.
  • претходни (): Ова функција ће вратити нови итератор на који ће га указати итератор након декрементације позиција у аргументима.
  • инсертер (): Ова функција ће уметнути елемент на било који положај у спремнику.

Практична примена

1. Ц ++ код за имплементацију Итератора

Код

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

Излаз:

2. Ц ++ код за приказ функционалности итератора

Код

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

Излаз:

Итератор Категорије

У односу на Ц ++ 17, постоји 5 различитих врста Итератора који се могу класификовати у зависности од врсте функционалности као што је приказано на доњем дијаграму:

  • Инпут Итератор (стдин) : Због ограничене функционалности они су најслабији од свих итератора са функцијом само за читање и напријед. Не може да промени вредност контејнера. Оператер дереференце (*), не једнаки оператор (! =), Оператер повећања (++) и оператор једнаких вредности (==) могу се користити као улазни итератори. Такође за секвенцијалне уносне операције.
  • Излазни итератор (стдоут): Итератор само за смештање итератора само за писање који се користи за промену вредности контејнера. Такође имају веома ограничену функционалност. Итератор не може приступити елементу. Оператор додјеле (=) и оператер повећања (++) могу се користити као излазни итератори. Само у алгоритму са једним пролазом.
  • Напријед Итератор (појединачно повезана листа): Овај програм за тестирање садржи функцију и улазних и излазних иттератора. Може се кретати према напријед са једним кораком. За читање и писање у контејнер, најпожељнији је итератор који подржава поновну употребу и чување. Подржава све горе наведене оператере.
  • Двосмерни пробник (двоструко повезан списак): Као што име већ сугерише двосмерни, што га чини јачим од горе наведених итератора. Такође подржава читање и писање у контејнер. Подржава оператора Децремент (-).
  • Итератор случајног приступа (низови): Најјачи итератор је најмоћнији итератор јер може насумично читати, писати и може приступити. Показивачка функција попут додавања и одузимања показивача.

Предности Итератора у Ц ++

Ако треба да пређете из једног елемента, итератор тренутно показује на други елемент који је потенцијално н корак даље од вашег тренутног итератора. Прве четири у хијерархији ће требати линеарну количину времена за то, док итератор са случајним приступом може то да ради у сталном времену и на тај начин је фасцинантнији јер се ту штеди време. То је најважнија функција коју Итератор пружа. У наставку су споменути још неки

  • Ефикасност кода: Ако имамо П врсте спремника података и К ствари које желимо да урадимо са њима, онда ћемо на крају написати П * К алгоритме. Ако су подаци такође Р различитих врста, можда ћемо завршити алгоритам П * К * Р. Дакле, помоћу итератора то можемо учинити у П + К алгоритму. Уштедјели смо 90% времена и рада. Подизање ефикасности кода на следећи ниво. Концепт иза ефикасности је да итератор улаза над извором и излазни итератор преко циљне секвенце не морају бити истог типа.
  • Динамичка обрада: Итератори имају динамичке функционалности као што су замена у истом контејнеру, копирање које може да се додијели, повећање, преусмјеравање и смањивање количине. Итератор пружа функцију за уклањање и динамичко додавање елемената у спремник. Како се сви итератори могу увећати, итератори уноса могу се упоредити и дереференцирати на вредност. Двосмерни итератори се могу смањити. Главни аспект је написати једну функцију и користити је за било који спремник.

Недостаци Итератора у Ц ++

  • Не можете истовремено да прелазите из једне структуре података у другу на неки сложен начин. Итератор у том случају неће радити.
  • Ако обрађујете листу и нешто сте заборавили, а сада се желите вратити, не можете јер итератори неће радити на тај начин.
  • У случају да требате да ажурирате структуру током кретања, то не можете учинити и због итератора за чување њеног положаја.

Закључак

Док користите итераторе увек имате на уму ове две ствари за ефикасност кода. Увек пребаците итератор у функцију уместо контејнера. Никада не смете враћати контејнере уместо повратка или проћи итератор. Било који елемент можете добити помоћу итератора, одмакавања и слање пара итератора у алгоритам

Препоручени чланци

Ово је водич за Итератор у Ц ++. Овде смо расправљали о операцијама у итератору, категоријама, предностима и недостацима са кодовима и излазима. Можете и да прођете кроз наше друге сродне чланке да бисте сазнали више -

  1. Низи у Ц ++
  2. Шта је Ц ++
  3. Ц ++ функције матрице
  4. Петље у Ц ++
  5. ПХП Арраи Фунцтионс | Врсте функција матрице у ПХП-у

Категорија: