Co je vektorový Iterátor?
Vektorový iterátor je konstrukce počítačového jazyka, která umožňuje programu číst hodnoty dat obsažené ve specializované sbírce zvané vektor. Vektory jsou objekty používané k seskupení souvisejících datových hodnot, podobných polím a seznamům. Mnoho různých počítačových jazyků, zejména Java a C ++, obsahuje vektory a související iterátory. Každý jazyk používá pro iterátory odlišnou syntaxi, ale základním mechanismem ve všech jazycích je individuální přístup ke každému možnému členu vektorové skupiny.
Pohyb vektorem pomocí iterátoru se často nazývá procházení nebo iterace. Vektorové iterátory lze také použít k explicitní identifikaci konkrétního objektu ve vektorové sbírce. Když je tato identifikace provedena, je objekt identifikován svým indexem ve vektoru, nikoli žádnou charakteristikou samotného objektu. Akce lze s objektem provádět, pokud je iterátor dereferencován, což dává programu výslovný přístup k objektu místo vektoru.
Vektorové iterátory mají velmi malou šanci setkat se s mezními chybami, ke kterým může dojít při iteraci polí. Ačkoli vektory jsou v podstatě glorifikovaná pole, když jsou dekonstruovány, vektory téměř vždy mají nějaký typ hranic, který zajišťuje, že vektorový iterátor zůstává ve správných indexech. Při procházení vektorem se iterátor, pokud je volán správně, vždy začíná na začátku vektoru a končí přesně na konci. Explicitní specifikace nesprávného indexu je stále možná v určitých kontextech, ale vestavěná kontrola hranic vektorů, která se překládá na jejich iterátory, zabraňuje problémům s přetečením mezí.
V C ++ mohou být vektory modifikovány, zatímco jsou procházeny iterátory, ale Java to výslovně zakazuje. Akce Java za těchto okolností jsou mnohem bezpečnější, protože změna vektoru, zatímco se iterátor pohybuje, může způsobit, že se iterátor nechtěně přečte mimo vektor. Pokus o přidání nebo odebrání položek z vektoru během iterace je obzvláště nebezpečný, zejména pokud jsou počáteční a koncové indexy, které musí vektor pokrývat, pevně zakódovány. Vektorový iterátor není vybaven k tomu, aby zvládl náhlé změny ve vektorech, a vektory se považují za relativně statické, zatímco jsou procházeny.
Vektorový iterátor může být implicitní nebo explicitní a každá syntaktická forma spustí průchod stejně hladce. 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ě tvrdé kódování koncového indexu vektoru urychluje průchody. Tento problém nenastává u malých vektorů, takže tvrdé kódování koncového indexu nezpůsobuje žádné zrychlené zrychlení. Tvrdé kódování koncového indexu může zvýšit riziko přetečení, takže by obecně mělo být provedeno střídmě.