Hva er en vektorterator?
En vektor iterator er et dataspråk konstrukt 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 relaterte iteratorer. Hvert språk bruker forskjellige 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 hjelp av en iterator kalles ofte å krysse eller itereere. Vector iteratorer kan også brukes til eksplisitt å identifisere et bestemt objekt i vektorsamlingen. Når denne identifikasjonen utføres, blir objektet identifisert av dets indeks i vektoren, ikke av noen egenskaper ved selve objektet. Handlinger kan utføres på objektet hvis iteratoren blir fjernet, noe som gir programmet eksplisitt tilgang til objektet i stedet for vektoren.
Vector iteratorer har veldig liten sjanse for å møte feil utenfor grensen som kan skje mens de iteres over matriser. Selv om vektorer i hovedsak er glorifiserte arrays når de blir konstruert, har vektorer nesten alltid en slags grensekontroll som sikrer at en vektor iterator forblir på de riktige indeksene. Når du krysser en vektor, starter iteratoren, hvis den kalles riktig, alltid på begynnelsen av vektoren og slutter helt på slutten. Eksplisitt spesifikasjon av en feil indeks er fremdeles mulig i visse sammenhenger, men den innebygde grensekontrollen av vektorer, som oversetter til deres iteratorer, forhindrer overflødige problemer utenfor rammen.
I C ++ kan vektorer endres mens de blir krysset av iteratorer, men Java forbyr eksplisitt at dette skjer. Javas handlinger i dette tilfellet er mye tryggere fordi det å endre en vektor mens en iterator beveger seg på det kan føre til at iteratoren uforvarende leser utenfor vektoren. Forsøk på å legge til eller fjerne elementer fra en vektor mens iterering er spesielt farlig, spesielt hvis start- og sluttindeksene som 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 de krysses.
En vektor iterator kan være implisitt eller eksplisitt, og enten syntaktisk form kjører gjennomgangen like glatt. Til tross for at den er kodet for effektivitet, kan en vektor-iterator reduseres med en veldig stor vektor. I dette tilfellet gjør hardkoding av sluttindeksen for vektoren raskere gjennomgang. Dette problemet forekommer ikke med små vektorer, så hardkoding av sluttindeksen forårsaker ikke nevneverdig oppstart. Hard koding av sluttindeksen kan øke risikoen for overløp, så generelt sett bør det gjøres sparsomt.