På den måde markøren af array (array navn) vil ikke ændre sin position og indeksering anvende array navn forbliver OK. Frygten for indeksering problemet vil ikke være der. For ovenstående kode, vil den returnerede eller gemt adresse derefter anvendes for at se om dynamiske hukommelse var tilgængelig. Du har brug for en klasse (et objekt instantieret fra det), der vil have den scanning pointer og derefter vende tilbage eller gemme den adresse, du ønsker. Et sådant objekt kan kaldes en iterator. I praksis iteratorer for beholderne beholderens Library er mere komplekse end dette.
Vi må ikke gå ind i nogen af en sådan kompleksitet her. Følgende kode giver klassen af en simpel iterator for ovennævnte problem: class Iter {public: int * retPtr; ITER (int INDX, int * PTR) {int * iterPtr = ptr; for (int i = 0; i ++ iterPtr;} retPtr = iterPtr;} int * retrnPtr () {return retPtr,}};.. Der er én ejendom, og to metoder i klassen Den første metode er konstruktøren Det har som parametre et indeks af elementet, hvis pointer, du leder efter, og markøren til den dynamiske hukommelse array.
I den første opgørelse inde konstruktøren, er markøren af array, som peger på det første element i arrayet tildelt til en nye pointer i en initialisering redegørelse. Det er denne nye pointer, inkrementeres og ikke markøren til arrayet. Den for-løkke i konstruktøren forøger den nye pointer et antal gange svarende til indekset position (INDX) sendes som argument. Den sidste sætning i konstruktøren tildeler den endelige øges pointer til ejendommen af klassen. Den anden metode i klassen, returnerer denne sidste øges værdi. Det er sådan vores iterator fungerer.
Det tager en ny pointer til en position, og overlader det der, og ikke tage det tilbage til sin startposition. Praktiske iteratorer arbejder på en lignende måde. Med praktiske iteratorer, hvis du ønsker at ændre placeringen af den iterator (markøren), er du nødt til at flytte den fra den holdning, det var t