*   >> Lese Utdanning Artikler >> science >> programming

Prinsipper for en enkel C ++ Sequence Container

fortsetter du å fylle listen med standardverdier. Når du legger til et element i listen, kan du sjekke om dynamisk minne var . tilgjengelig ved å bekrefte om NULL ble returnert Det er et problem her. Når du legger til et element ved hjelp av hakeparenteser og rekke pekeren som vist ovenfor, pekeren er ikke økes Du må øke pekeren en rekke ganger før det peker til den ekstra element, før du kan bruke den til å sjekke om den returnerte verdien er NULL. Følgende kode illustrerer dette for en int dynamisk array.

# include bruker namespace std; int main () {int * listPtr = new int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //legge nytt element. listPtr [5] = 5; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; if (listPtr == NULL) {cout} --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; returnere 0; } Du må dekrementere pekeren, like mange ganger som du inkrementeres det.

Hvis du ikke minske, indeksen i hakeparentes for pekeren vil ikke lenger avspeiler de er tiltenkt (original) verdi; under den forutsetning, vil pekeren med indeksen ikke tilbake den riktige verdien. Les koden ovenfor hvis du ikke har gjort det (prøv det). Det er fortsatt et problem: Anta at det nye elementet ikke kan legges fordi pekeren vil peke på et minne posisjon som allerede har blitt tatt av en annen gjenstand ukjent for oss. I det tilfelle når man øke pekeren antall ganger ville det fortsatt peker til en adresse som eksisterer som ikke er NULL.

I dette tilfellet vil den hvis jekk med NULL forteller oss at en adresse finnes, men adressen ville ikke ha vår element (og dens verdi). Dette er en feil konklusjon. En bedre test er som følger: if (* listPtr = 5!) {Cout} I if-tilstand, se om den returnerte verdien er vi dereference pekeren til minne posisjonen den antatte lagt objekt og vi samme som verdien vi sendte for den ekstra element. I programmet over verdien vi sendte var 5. Iterator En peker er adressen til et objekt i minnet.

Vi så et problem over at når du beveger pekeren over matrise (matrise navn) den foran en rekke ganger, må du flytte den bak like mange ganger, ellers indeksering vil gå galt. Så det er ikke tilrådelig å flytte pekeren av tabellen. Du kan ha mer enn én pekeren peker til samme adresse i minnet; det er du kan ha pekere til forskjellige navn som peker til samme adresse. I koden ovenfor, ønsket vi adressen til den siste (nylig lagt til) element. For å løse problemet ovenfor (indeks problem), er det godt å ha

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.