Skip to main content

Co je to vektorový iterátor?

Iterátor vektoru je konstrukt počítačového jazyka, který umožňuje programu číst hodnoty dat obsažených ve specializované sbírce nazvaném vektor.Vektory jsou objekty používané pro hodnoty souvisejících se seskupováním dat, podobně jako polí a seznamy.Mnoho různých počítačových jazyků, zejména Java a C ++, obsahuje vektory a jejich související iterátory.Každý jazyk používá pro iterátory odlišnou syntaxi, ale základní mechanismus ve všech jazycích je individuální přístup ke každému možnému členovi vektorové skupiny.

Pohybující se vektorem pomocí iterátoru se často nazývá procházení nebo iterační.Vektorové iterátory lze také použít k výslovnému identifikaci konkrétního objektu ve vektorové sbírce.Když je tato identifikace provedena, objekt je identifikován jeho indexem ve vektoru, nikoli podle vlastností samotného objektu.Akce lze provést na objektu, pokud je iterátor dereferencován, což poskytuje programu explicitní přístup k objektu spíše než vektoru.Přestože jsou vektory v podstatě oslavené pole po dekonstrukci, vektory mají téměř vždy nějaký typ hranic, které zajišťují, že vektorový iterátor zůstává ve správných indexech.Při procházení vektorem iterátor, pokud je volán správně, vždy začíná na začátku vektoru a končí přesně na konci.V určitých kontextech je stále možná výslovná specifikace nesprávného indexu, ale vestavěné hranice vektorů, které se promítá do jejich iterátorů, zabraňují problémům s přetečením hranic., ale Java to výslovně zakazuje.Javasovy akce za těchto okolností jsou mnohem bezpečnější, protože změna vektoru, zatímco iterátor se pohybuje na něm, může způsobit, že iterátor neúmyslně čte mimo vektor.Pokus o přidání nebo odebrání položek z vektoru při iteraci je obzvláště nebezpečný, zejména pokud jsou indexy počátečního a koncového vektoru pokrýt pevně kódovány.Vektorový iterátor není vybaven pro zvládnutí náhlých změn vektorů a vektory mají být při procházení relativně statické.Přestože je vektorový iterátor kódován pro účinnost, může být zpomalen velmi velkým vektorem.V tomto případě pevné kódování koncového indexu vektoru zrychluje traversy.K tomuto problému nedochází u malých vektorů, takže pevné kódování koncového indexu nezpůsobuje žádné značné zrychlení.Pevné kódování konečného indexu může zvýšit riziko přetečení, takže obecně by to mělo být provedeno střídmě.