Skip to main content

Hva er en vektor iterator?

En vektor iterator er en dataspråkkonstruksjon som lar et program lese dataverdier i en spesialisert samling kalt en vektor.Vektorer er objekter som brukes til å gruppere relaterte dataverdier, ligner på matriser og lister.Mange forskjellige dataspråk, spesielt Java og C ++, inneholder vektorer og deres relaterte iteratorer.Hvert språk bruker forskjellig syntaks for iteratorene, men den underliggende mekanismen på alle språk er individuell tilgang til hvert mulig medlem av vektorgruppen.

Å bevege seg gjennom en vektor ved bruk av en iterator kalles ofte Traversing eller iterating.Vektor iteratorer kan også brukes til å eksplisitt identifisere et bestemt objekt i vektorsamlingen.Når denne identifikasjonen utføres, identifiseres objektet av dens indeks i vektoren, ikke av noen egenskaper av selve objektet.Handlinger kan utføres på objektet hvis iteratoren blir henvist til, og gir programmet eksplisitt tilgang til objektet i stedet for vektoren.

Vektor iteratorer har veldig liten sjanse til å møte ut av grensene som kan skje mens de itererer over matriser.Selv om vektorer i det vesentlige er glorifiserte matriser når de dekonstrueres, har vektorer nesten alltid en eller annen type grenser som sikrer at en vektor iterator forblir på de riktige indeksene.Når den krysser en vektor, starter iteratoren, hvis den kalles riktig, alltid i begynnelsen av vektoren og ender på nøyaktig slutten.Eksplisitt spesifikasjon av en feil indeks er fremdeles mulig i visse sammenhenger, men de innebygde grensene som kontrollerer vektorer, som oversettes til deres iteratorer, forhindrer grenser overløpsproblemer.

I C ++ kan vektorer modifiseres mens de blir krysset av iteratorer, men Java forbyr eksplisitt dette å skje.Javas -handlinger i denne omstendigheten er mye tryggere fordi det å endre en vektor mens en iterator går videre, kan føre til at iteratoren utilsiktet leser utenfor vektoren.Å prøve å legge til eller fjerne elementer fra en vektor mens iterasjon er spesielt farlig, spesielt hvis start- og sluttindeksene vektoren må dekke er hardkodet.En vektor iterator er ikke utstyrt for å håndtere plutselige endringer i vektorer, og vektorer er ment å være relativt statiske mens den krysses.

En vektor iterator kan være implisitt eller eksplisitt, og enten syntaktisk formen kjører traversal like jevnt.Til tross for at den er kodet for effektivitet, kan en vektor iterator bremses av en veldig stor vektor.I dette tilfellet fremskynder hardkoding av endindeksen til vektoren traversals.Dette problemet oppstår ikke med små vektorer, så hardt koding av sluttindeksen forårsaker ikke noen betydelig speedup.Hardkoding av sluttindeksen kan øke risikoen for overløp, så generelt bør det gjøres sparsomt.