Hvad er en vektorterator?
En vektor iterator er en computersprogkonstruktion, der tillader et program at læse dataværdier indeholdt i en specialiseret samling kaldet en vektor. Vektorer er objekter, der bruges til at gruppere relaterede dataværdier, der ligner arrays og lister. Mange forskellige computersprog, især Java og C ++, indeholder vektorer og deres relaterede iteratorer. Hvert sprog bruger forskellige syntaks for iteratorerne, men den underliggende mekanisme på alle sprog er individuel adgang til hvert muligt medlem af vektorgruppen.
At bevæge sig gennem en vektor ved hjælp af en iterator kaldes ofte gennemkørsel eller iterering. Vector iteratorer kan også bruges til eksplicit at identificere et bestemt objekt i vektorsamlingen. Når denne identifikation udføres, identificeres objektet ved dets indeks i vektoren, ikke af nogen egenskaber ved selve objektet. Handlinger kan udføres på objektet, hvis iteratoren udledes, hvilket giver programmet eksplicit adgang til objektet i stedet for vektoren.
Vector iteratorer har meget lille chance for at støde på fejl uden for grænserne, der kan ske, mens de gentages over arrays. Selvom vektorer i det væsentlige er glorificerede arrays, når de dekonstrueres, har vektorer næsten altid en slags grænsekontrol, der sikrer, at en vektor-iterator forbliver på de rette indekser. Når du krydser en vektor, starter iteratoren, hvis den kaldes korrekt, altid i starten af vektoren og slutter i nøjagtigt slutningen. Eksplicit specifikation af et forkert indeks er stadig muligt i visse sammenhænge, men den indbyggede grænsekontrol af vektorer, der oversættes til deres iteratorer, forhindrer oversvømmelsesproblemer uden for grænserne.
I C ++ kan vektorer ændres, mens de gennemgås af iteratorer, men Java forbyder udtrykkeligt, at dette sker. Java's handlinger i denne situation er meget sikrere, fordi det at ændre en vektor, mens en iterator bevæger sig på det, kan få iteratoren til at læse utilsigtet uden for vektoren. Forsøg på at tilføje eller fjerne genstande fra en vektor under iterering er især farligt, især hvis start- og slutindekserne, som vektoren skal dække, er hårdkodede. En vektor iterator er ikke udstyret til at håndtere pludselige ændringer i vektorer, og vektorer er ment at være relativt statiske, mens de krydses.
En vektor iterator kan være implicit eller eksplicit, og enten syntaktisk form kører gennemgangen lige så glat. På trods af at den er kodet for effektivitet, kan en vektor-iterator nedsættes med en meget stor vektor. I dette tilfælde fremskynder hardkodning af vektorens slutindeks gennemgang. Dette problem forekommer ikke med små vektorer, så hårdkodning af slutindekset forårsager ikke nogen mærkbar speedup. Hård kodning af slutindekset kan øge risikoen for overløb, så det bør generelt gøres sparsomt.