prinsippene for en enkel C ++ Sequence Container Container bibliotek Sekvenser i C ++ forenklet - Del 2 divisjon 1 Innledning Dette er del 2 av min serie, Containere Bibliotek Sekvenser i C ++, forenklet. Du burde ha lest del 1 før du leser denne delen. I denne delen av serien ser vi på prinsippene for en enkel C ++ Sequence Container. Merk: Hvis du ikke kan se koden, eller hvis du tror noe mangler (ødelagt kobling, bilde fraværende), bare kontakte meg på [email protected]. Det er, kontakt meg for den minste problemet du har om hva du leser.
Noen regler om List jeg vil lage en enkel C ++ container riktig, i neste del av serien. Det er noen regler om rekken i det dynamiske minnet som du bør huske eller lære. Vi ser på dem for resten av denne opplæringen. Opprette en Array i Dynamic Memory Følgende uttalelse, kopiert fra klassen konstruktør ovenfor, skaper en matrise i dynamisk minne. T * listPtr = ny T [noIniCells]; T er en plassholder for objekttypen hvis du arbeider med en mal. Hvis du ikke arbeider med en mal, og deretter T ville være si, int eller røye eller flyte, etc.
Tilgang til et element for en int array, hvis du vil at den nye verdien av et element, sier indeksen 3 for å være 17, du ville skrive setningen: listPtr [3] = 17; Du bruker pekeren og hakeparentesene; du trenger ikke komme før pekeren med * for verdien; hakeparenteser ta seg av det. For den enkle container, skal vi ha en litt annen måte å få tilgang verdiene. Øke størrelsen på Dynamic Array Du kan øke størrelsen, ett element om gangen. For å gjøre dette, bruker pekeren med indeksen av forventet neste elementet til neste element.
Hvis det over mønsteret har 5 elementene innledningsvis, betyr det den høyeste indeks 4. Hvis matrisen er for ints, for å øke størrelsen på matrisen ved en og gir verdien 26 til det nye element, skriver setningen: listPtr [5 ] = 26; Er Dynamic Memory tilgjengelig? Dynamisk minne (free butikken) kanskje ikke tilgjengelige når du ønsker det. Så må du sjekke om dynamisk minne er tilgjengelig før du oppretter array og sjekk også om det er tilgjengelig før du legger til et nytt element.
Følgende kode vil kontrollere og opprette startlisten for ovennevnte konstruktør: T * listPtr = ny T [noIniCells]; if (! listPtr = NULL) {for (int i = 0; i {listPtr [i] = defaultObj;}} else {cout} Hvis det ikke er dynamisk minne, anmodning om det (ny T [noIniCells]) returnerer NULL . Så etter å ha forsøkt å lage en liste, sjekk deg hvis pekeren er NULL. Hvis det ikke er NULL,