Seuraava koodi antaa luokan yksinkertainen iteraattori varten edellä mainittu ongelma: luokka Iter {julkinen: int * retPtr; Iter (int INDX, int * ptr) {int * iterPtr = ptr; for (int i = 0; i ++ iterPtr;} retPtr = iterPtr;} int * retrnPtr () {palata retPtr,}}; On yksi ominaisuus ja kaksi menetelmiä luokassa. Ensimmäinen menetelmä on rakentaja. Se on kuten parametrit indeksi elementin, jonka osoitin etsit, ja osoitin dynaamista muistia array. Ensimmäisessä lausuman sisällä rakentaja, osoitin array, joka viittaa ensimmäiseen alkiota osoitetaan uusi osoitin alustuksen selvitys.
Se on tämä uusi osoitin, jota kasvatetaan eikä osoitin array. for-silmukan rakentaja kasvattaa uuden osoittimen useita kertoja sama indeksi asentoon (INDX) lähetetään argumentti. viimeinen toteamus rakentaja määrittää lopullinen kasvaa osoitin omaisuutta luokka. Toinen menetelmä luokassa, palauttaa tämä lopullinen kasvatetaan arvoa. Näin meidän iteraattori toimii. Se vie uuden osoittimen asema ja jättää sinne, ja ei ota sitä takaisin alkuasentoon. Käytännön iteraattorit toimivat samalla tavalla.
Käytännölliset iteraattorit, jos haluat muuttaa asentoa iteraattori (osoitin), sinun täytyy siirtää sen kannan se jäi, eikä sen alkuasentoon. Seuraava koodi, joka kannattaa lukea ja kokeilla, osoittaa, kuinka yksinkertainen iteraattori voidaan käyttää edelliseen koodi: # include using namespace std; luokan Iter {julkinen: int * retPtr; Iter (int INDX, int * ptr) {int * iterPtr = ptr; for (int i = 0; i ++ iterPtr;} retPtr = iterPtr;} int * retrnPtr () {palata retPtr,}}; int main () {int * listPtr = uusi int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //lisätään uusi elementti.
listPtr [5] = 5; Iter myIter (5, listPtr) ; int * returnPtr = myIter.retrnPtr (); jos (* returnPtr! = 5) {cout} else {cout cout cout cout cout cout cout cout} return 0;} Seuraavassa osa sarjasta, käytämme tietoa olemme kehittäneet toistaiseksi luodaksesi C ++ Sequence (kontti). Otta