Hvordan lagre en liste over objekter i MFC

Hver programmeringsspråk og bibliotek omfatter en rekke som en del av sin verktøysett. Arrays er nyttige fordi de tillater praktisk og effektiv lagring av data. The Microsoft Foundation Classes gir CArray klassen. Den kan lagre data av enhver type. CArray implementerer en skalerbar matrise som kan krympe eller vokse ved behov. Følg disse trinnene for å praktisere de mest brukte funksjonene i CArray og gjennomføre den med en gang.

Bruksanvisning

1 Forstå klassen erklæring eller prototype som vist nedenfor. Den første parameteren, TYPE, spesifiserer hva slags objekter er lagret i og returnert av tabellen. Den andre parameteren, ARG_TYPE, indikerer hvilken type argument som brukes for å få tilgang til et objekt. Ofte er ARG_TYPE en referanse til den første parameteren. De med kjennskap til Standard Template Library of ren C ++ vil merke MFC CArray prototypen sin likhet med at kartet container:

mal <class TYPE, klasse ARG_TYPE> klasse CArray: public CObject

2 Kjenne grunnlaget for MFC CArray. Indekseringen er null basert. Det vil si, det første elementet er i stilling 0, mens det siste elementet er i posisjon "ARRAY_SIZE-1". Dersom CArray gjenstand er av størrelse 10, da det siste elementet er i stilling 9. matrisen størrelse kan stilles inn, eller elementene kan legges en etter en, slik at rekken til å vokse forbi sin nåværende størrelse. De minnetildelinger er sammenhengende som standard, helt til minnesektoren er overskredet.

3 Pre-allokere minne for matrisen. Gjør dette rett etter erklæringen. Selv om du ikke vet størrelsen på matrisen vil nå, gjør en liberal estimat. Pre-tildeling forbeholder seg en sammenhengende (kontinuerlig) minne område hvor matrisen vil ligge. Når minnet har ingen diskontinuitet, matriseoperasjoner er mer effektive og kopiering og dataoverføringer er forhindret. For denne operasjonen, bruk "SetSize ()" -funksjon.

4 Legg objekter til matrisen ved å bruke "Legg til ()" -funksjonen, som vist nedenfor:


CArray <CPek, CPek> parr;

pArr.Add (CPek (20, 40));

5 Tilgang elementer lagret i matrisen. Du kan gjøre dette gjennom "GetAt ()" -funksjonen og gjennom operatøren "[]" som i alle andre arrays. "GetAt ()" aksepterer en indeks heltall og returnerer elementet lagres på denne plasseringen. Det motsatte er "SetAt ()" som endrer en verdi for en gitt indeks.

6 Fjerne et element fra tabellen. For dette, kan du bruke "RemoveAt ()" eller "RemoveAll ()" -funksjon. "RemoveAll ()» tømmer CArray gjenstand for alle elementene. "RemoveAt ()" godtar to innganger, et heltall indeks og antall elementer som skal fjernes fra og med denne plasseringen:

void RemoveAt (int nIndex, int nCount = 1);

Hint

  • Den tid det tar å motta et element fra CArray er konstant og ikke avhengig av dens størrelse, eller gjenstanden sted.
  • En rekke CArray medlem funksjoner ringe til globale hjelpefunksjoner at CArray klassen tilpasser. Ha dette i bakhodet når de vurderer effektivitet.
  • "DestructElements ()" er en hjelpefunksjon som kalles når elementer er fjernet. "ConstructElements ()" er en hjelpefunksjon som kalles når elementer er opprettet.
  • Når du ødelegge et CArray objekt som inneholder pekere, må du ødelegge de objektene de pekte til separat.