*   >> lukeminen koulutus Artikkelit >> science >> programming

Periaatteet Yksinkertainen C ++ Sequence Container

deksointi käyttäen array nimi säilyy OK. Pelko indeksointi ongelman ole siellä. Edellä koodi, palauttaa tai tallennetun osoitteen käytetään sitten onko dynaamista muistia oli saatavilla. Tarvitset luokka (objekti instantiated siitä) että on skannaus osoitinta ja sitten palauttaa tai tallentaa haluamasi osoite. Tällainen esine voidaan kutsua iteraattori. Käytännössä iteraattorit varten säiliöihin Container kirjaston ovat monimutkaisempia kuin tämä. Emme mene mihinkään tällaisten monimutkaisuus täällä.

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

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 lukeminen koulutus Artikkelit,https://koulutus.nmjjxx.com All rights reserved.