Du trenger en klasse (et objekt instansiert fra det) som vil ha skanning pekeren og deretter returnere eller lagre adressen du ønsker. Et slikt objekt kan kalles en iterator. I praksis itera for beholdere av Container biblioteket er mer komplekse enn dette. Vi skal ikke gå inn i noen av en slik kompleksitet her. Følgende kode gir klassen av en enkel iterator for det over problemet: 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;}};..
Det er en eiendom og to metodene i klassen Den første metoden er konstruktøren Det har som parametre en indeks av elementet som peker du er ute etter, og pekeren til den dynamiske minnegruppen. I den første setningen inne i konstruktøren, er pekeren i matrisen, som peker til det første elementet i matrisen tildelt en ny pekeren i en initialisering uttalelse. Det er denne nye spisser som økes og ikke pekeren til matrisen. Den for-loop i konstruktøren inkrementerer nye pekeren en rekke ganger lik indeksen posisjon (INDX) sendt som argument.
Den siste setningen i konstruktøren tildeler den endelige økes pekeren til eiendommen av klassen. Den andre metoden i klassen, returnerer denne endelige økte verdi. Det er hvordan vår iterator fungerer. Det tar en ny peker til en stilling og forlater den der, og ikke ta det tilbake til sin startposisjon. Praktisk iteratorer fungerer på en lignende måte. Med praktiske iteratorer, hvis du ønsker å endre plasseringen av iterator (pekeren), må du flytte den fra den posisjonen den var igjen, og ikke fra sin startposisjon.
Følgende kode, som du bør lese og prøve, viser hvordan den enkle iterator kan brukes med den forrige koden: # include bruker namespace std; klasse Iter {public: int * retPtr; ITER (int INDX, int * ptr) {int * iterPtr = ptr; for (int i = 0; i ++ iterPtr;} retPtr = iterPtr;} int * retrnPtr () {return retPtr;}}; int main () {int * listPtr = new int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] =