Skip to main content

Vad är en vektor iterator?

En vektor iterator är en datorspråkkonstruktion som gör det möjligt för ett program att läsa datavärden som finns i en specialiserad samling som kallas en vektor.Vektorer är objekt som används för att gruppera relaterade datavärden, liknande matriser och listor.Många olika datorspråk, särskilt Java och C ++, innehåller vektorer och deras relaterade iteratorer.Varje språk använder olika syntax för iteratorerna, men den underliggande mekanismen på alla språk är individuell tillgång till varje möjlig medlem i vektorgruppen.

Att flytta genom en vektor med hjälp av en iterator kallas ofta korsning eller itererande.Vektor -iteratorer kan också användas för att uttryckligen identifiera ett visst objekt i vektorsamlingen.När denna identifiering utförs identifieras objektet av dess index i vektorn, inte av några egenskaper hos själva objektet.Åtgärder kan utföras på objektet om iteratorn är avskild, vilket ger programmet uttrycklig åtkomst till objektet snarare än vektorn.

vektor iteratorer har mycket liten chans att möta de av gränser som kan hända medan itering över matriser.Även om vektorer i huvudsak är förhärliga matriser när de dekonstrueras, har vektorer nästan alltid någon typ av gränser som säkerställer att en vektor iterator förblir i rätt index.När du korsar en vektor börjar iteratorn, om den kallas korrekt, alltid i början av vektorn och slutar vid exakt slutet.Explicit specifikation av ett felaktigt index är fortfarande möjlig i vissa sammanhang, men de inbyggda gränser som kontrollerar vektorer, som översätter till sina iteratorer, förhindrar överflödesproblem.

I C ++ kan vektorer modifieras medan de korsas av iteratorer, men Java förbjuder uttryckligen att detta händer.Javas -åtgärder i denna omständighet är mycket säkrare eftersom att ändra en vektor medan en iterator går vidare kan det få iteratorn att oavsiktligt läsa utanför vektorn.Att försöka lägga till eller ta bort objekt från en vektor medan iterering är särskilt farlig, särskilt om start- och slutindexen vektorn måste täcka är hårkodade.En vektor -iterator är inte utrustad för att hantera plötsliga förändringar i vektorer, och vektorer är tänkta att vara relativt statiska medan de korsas.

En vektor iterator kan vara implicit eller uttrycklig, och antingen syntaktisk form kör traversal lika smidigt.Trots att den är kodad för effektivitet kan en vektor -iterator bromsas med en mycket stor vektor.I detta fall påskyndar hårdkodning av slutindexet för vektorn traversaler.Detta problem uppstår inte med små vektorer, så hård kodning av slutindexet orsakar inte någon märkbar hastighet.Hård kodning av slutindexet kan höja risken för överflöd, så i allmänhet bör det göras sparsamt.