*   >> läser Utbildning artiklar >> science >> programming

Principer för en enkel C ++ Sekvens Container

ta (nytillkomna) elementet. För att lösa ovanstående problem (index problem), är det bra att ha en pekare av ett annat namn som kommer att skanna ditt objekt för dig att få den adress du letar efter. Denna adress kan returneras eller sparas någonstans i ett objekt (identifierare). På så sätt pekaren av arrayen (matris namn) inte kommer att ändra sin position och indexeringen genom att använda matrisen namn kommer att förbli på OK. Rädslan för indexerings problemet kommer inte att vara där.

För ovanstående kod, kommer tillbaka eller sparas adress sedan användas för att se om dynamiskt minne var tillgängliga. Du behöver en klass (ett föremål instansieras från det) som kommer att ha skannings pekaren och sedan återvända eller spara den adress du vill. Ett sådant objekt kan kallas en iterator. I praktiken iteratorer för behållarna enligt Containerbiblioteket är mer komplex än så. Vi får inte gå in i någon av en sådan komplexitet här.

I följande kod ger klassen en enkel iterator för ovanstående problem: 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 finns en fastighet och två metoder i klassen Den första metoden är konstruktören har som parametrar ett index på elementet vars pekaren du letar efter, och pekaren till det dynamiska minnesmatrisen.

I den första satsen inuti konstruktorn pekaren av arrayen, vilket pekar på det första elementet i arrayen tilldelas en nya pekaren i en initiering uttalande. Det är denna nya pekare som ökas och inte pekaren till matrisen. Den for-loop i konstruktorn ökar den nya pekaren ett antal gånger lika med indexpositionen (INDX) skickas som argument. Den sista uttalandet i konstruktorn tilldelar den slutliga ökas pekaren till fastigheten i klassen. Den andra metoden i klassen, returnerar slutliga ökas värde. Det är hur vår iterator fungerar.

Det tar en ny pekare till en position och lämnar den där, och inte ta det tillbaka till sitt utgångsläge. Praktiska iteratorer arbetar på ett liknande sätt. Med praktiska iteratorer, om du vill ändra placeringen av iterator (pekaren), måste du flytta den från den position det var kvar, och inte från sin startposition.

Följande kod, som du bör läsa och försöka, visar hur den enkla iterator kan användas med föregående kod: #include using namespace std; klass Iter {public: int * retPtr; Iter (int INDX, int * ptr) {int * iterPtr = ptr; for (int i = 0; i ++ iterPtr;} retP

Page   <<  [1] [2] [3] [4] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.