Hva er en matrise?
En matrise er en datastruktur som lagrer et element av samme datatype sekvensielt. En C ++ matrise har en fast størrelse.
Du kan se en matrise som en samling variabler av samme datatype. I stedet for å erklære hver variabel og tildele den en verdi individuelt, kan du erklære en variabel (matrisen) og legge til verdiene til de forskjellige variablene. Hver verdiøkning i matrisen identifiseres av en indeks.
I denne C ++ opplæringen vil du lære:
- Hva er en matrise?
- Hvorfor trenger vi matriser?
- Deklarer en matrise i C ++
- Initialisering av matrise
- Typer arrays
- En-dimensjonal matrise
- Flerdimensjonalt array
- To dimensjonal matrise
- Tre-dimensjonal matrise
- Peker til en serie
- Få tilgang til verdiene til en matrise
- Fordeler med en matrise i C ++
- Ulemper med en matrise i C ++
Hvorfor trenger vi matriser?
Arrays er veldig viktige i ethvert programmeringsspråk. De gir en mer praktisk måte å lagre variabler eller en samling av data av lignende datatype sammen i stedet for å lagre dem separat. Hver verdi i matrisen blir tilgjengelig separat.
Deklarer en matrise i C ++
Matrixerklæring i C ++ innebærer å angi typen så vel som antall elementer som skal lagres av matrisen. Syntaks:
type array-Name [ array-Size ];
Regler for å erklære en enkeltdimensjonsmatrise i C ++.
- Type: Typen er typen elementer som skal lagres i matrisen, og den må være en gyldig C ++ datatype.
- Array-Name: Array-Name er navnet som skal tilordnes matrisen.
- Array-Size: Array-Size er antall elementer som skal lagres i matrisen. Det må være et helt tall og større enn 0.
For eksempel kan du opprette en matrise som heter alder og lagre alderen på 5 studenter som følger:
int age[5];
Arrayalderen vil lagre 5 heltall som representerer aldrene til forskjellige studenter.
Initialisering av matrise
Initialisering av matriser er prosessen med å tilordne / lagre elementer til en matrise. Initialiseringen kan gjøres i en enkelt uttalelse eller en etter en. Merk at det første elementet i en matrise er lagret ved indeks 0, mens det siste elementet er lagret ved indeks n-1, hvor n er det totale antallet elementer i matrisen.
Når det gjelder aldersgruppen, blir det første elementet lagret i indeks 0, mens det siste elementet blir lagret i indeks 4.
La oss bruke aldersgruppen for å demonstrere hvordan matrisinitialisering kan gjøres:
int age[5] = {19, 18, 21, 20, 17};
Det totale antallet elementer i {} kan ikke overstige verdien som er angitt i []. Elementet 19 er ved indeks 0, 18 ved indeks 1, 21 ved indeks 2, 20 ved indeks 3 og 17 ved indeks 4. Hvis du ikke oppgir antall elementer som skal lagres i matrisen innen [], vil matrisen vil bare være stor nok til å holde elementene lagt til i {}. For eksempel:
int age[] = {19, 18, 21, 20, 17};
Ovennevnte uttalelse vil opprette nøyaktig den samme matrisen som den forrige. Du kan også tilordne ett element til en matrise ved hjelp av indeksen. For eksempel:
age[3] = 20;
Ovennevnte utsagn vil lagre verdien 20 i indeks 3 av matrisen med navnet age. Dette betyr at 20 vil være det fjerde elementet i matrisen.
Typer arrays
Det er to typer C ++ - matriser:
- En dimensjonal matrise
- Flerdimensjonalt array
- Peker til en serie
En-dimensjonal matrise
Dette er en matrise der dataelementene bare er ordnet lineært i en dimensjon. Det kalles ofte et 1-D-array. Syntaks:
datatype array-name[size];
- Matrisenavnet er navnet på matrisen.
- Størrelsen er antall elementer som skal lagres i matrisen.
For eksempel:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout < Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkludert iostream header-fil i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkludert std navneområdet for å bruke klassene og funksjonene uten å ringe det.
- Å ringe til hovedfunksjonen () som logikken til programmet skal legges til i.
- Start av kroppen til hovedfunksjonen ().
- Erklærer en matrise som heter alder for å lagre 5 heltall. De 5 heltallene er også initialisert.
- Opprett en heltalsvariabel x ved hjelp av en for-loop.
- Begynnelsen på kroppen til forløkken.
- Ved hjelp av loop-variabelen x til å gjenta verdiene til array-alderen og skrive dem ut på konsollen. "\ N" er et nytt linjetegn og skrives ut i en ny linje etter hver iterasjon.
- Slutten av kroppen til en løkke.
- Slutten av kroppen til hovedfunksjonen ().
Flerdimensjonalt array
Dette er en matrise der dataelementene er ordnet for å danne en matrise av matriser. En flerdimensjonal matrise kan ha et hvilket som helst antall dimensjoner, men todimensjonale og tredimensjonale matriser er vanlige. Syntaks:
datatype array-name[d1][d2][d3]… [dn];Matrisenavnet er navnet på matrisen som har n dimensjoner. For eksempel:
To dimensjonal matrise
En 2D-array lagrer data i en liste med 1-D-array. Det er en matrise med rader og kolonner. For å erklære en 2D-matrise, bruk følgende syntaks:
type array-Name [ x ][ y ];Typen må være en gyldig C ++ datatype. Se en 2D-matrise som en tabell, der x angir antall rader mens y betegner antall kolonner. Dette betyr at du identifiserer hvert element i en 2D-matrise ved hjelp av skjemaet a [x] [y], hvor x er antall rader og y antall kolonner elementet tilhører.
Her er et eksempel på hvordan du initialiserer en 2D-matrise:
int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};I eksemplet ovenfor har vi en 2D-matrise som kan sees på som en 2x3-matrise. Det er to rader og 3 kolonner. Elementet 0 kan nås som en [0] [1] fordi det er plassert i skjæringspunktet mellom radindeksert 0 og kolonneindeksert 1. Elementet 3 kan nås som en [1] [2] fordi det er plassert ved skjæringspunktet mellom radindeksert 1 og kolonneindeksert 2.
Merk at vi bare la til krøllete bukseseler for å skille mellom de forskjellige radene av elementer. Initialiseringen kunne også ha blitt gjort som følger:
int a[2][3] = {0, 2, 1, 4, 3, 7};};Følgende C ++ eksempel viser hvordan du initialiserer og krysser en 2D-matrise:
#includeusing namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" < Produksjon:
Her er et skjermbilde av ovennevnte kode:
Kode Forklaring:
- Inkludert iostream header-fil i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkludert std navneområdet for å bruke klassene og funksjonene uten å ringe det.
- Ringer til hovedfunksjonen () der koden skal legges til.
- Start av kroppen til hovedfunksjonen ().
- En kommentar. C ++ - kompilatoren hopper over dette.
- Erklærer et 2D-utvalg på 3 rader og 2 kolonner. Elementer er også lagt til matrisen.
- En kommentar. C ++ - kompilatoren hopper over dette.
- Opprette en variabel i ved hjelp av a for en loop. Denne variabelen vil gjentas over radindeksene til matrisen.
- Opprette en variabel j ved hjelp av a for en loop. Denne variabelen vil gjenta over kolonneindeksene til matrisen.
- Start av løkkekroppen.
- Skriv ut verdiene til variablene i og j på konsollen i firkantede parenteser på konsollen.
- Skriv ut verdien som er lagret ved indeks [i] [j] til matrisen a.
- Enden på løkkenes kropp.
- Hovedfunksjonen () skal returnere et heltall hvis programmet går bra.
- Slutten av kroppen til hovedfunksjonen ().
Tre-dimensjonal matrise
En 3D-matrise er en rekke matriser. Hvert element i en 3D-serie er identifisert av et sett med 3 indekser. For å få tilgang til elementene i et 3D-array, bruker vi tre for løkker. For eksempel:
#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";} Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkludert iostream header-fil i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkludert std navneområdet for å bruke klassene og funksjonene uten å ringe det.
- Å ringe til hovedfunksjonen () som logikken til programmet skal legges til i.
- Start av kroppen til hovedfunksjonen ().
- Erklærer et 3D-utvalg kalt størrelse 2x3x2. Verdiene til matrisen er også initialisert.
- Få tilgang til elementet som er lagret i indeks [0] [1] [0] i matrisen og skrive det ut på konsollen.
- Få tilgang til elementet som er lagret i indeks [0] [1] [1] i matrisen og skrive det ut på konsollen.
- Slutten av kroppen til hovedfunksjonen ().
Peker til en serie
En peker er en variabel som inneholder en adresse. Annet enn å bruke en peker til å lagre adressen til en variabel, kan vi bruke den til å lagre adressen til en matrixcelle. Navnet på en matrise peker hele tiden på det første elementet. Vurder erklæringen gitt nedenfor:
int age[5];Alderen er en peker til $ age [0], adressen til det første elementet i en matrise som heter age. Tenk på følgende eksempel:
#includeusing namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;} Produksjon:
Merk at den første verdien av ovennevnte utgang kan gi en annen verdi, avhengig av adressen som er tilordnet det første elementet i matrisen i datamaskinens minne.
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkludert iostream header-fil i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkludert std navneområdet for å bruke klassene og funksjonene uten å ringe det.
- Å ringe til hovedfunksjonen () som logikken til programmet skal legges til i.
- Start av kroppen til hovedfunksjonen ().
- Erklærer en pekervariabel med navnet * john.
- Erklærer et heltall array med navn alder for å lagre 5 heltall. Verdiene til heltallene er også initialisert.
- Tilordne variabelen john verdien av adressen til elementet som er lagret i den første indeksen til matrixalderen.
- Skriver ut verdien av variabelen john, som er adressen til elementet som er lagret i den første indeksen til matrixalderen.
- Skriver ut den første verdien som er lagret i matrixalderen.
- Slutten av kroppen til hovedfunksjonen ().
Matrisenavn kan brukes som konstante pekere, og omvendt er også sant. Dette betyr at du kan få tilgang til verdien som er lagret i indeks 3 i array-alder med * (age + 3). For eksempel:
#includeusing namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;} Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkludert iostream header-fil i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkludert std navneområdet for å bruke klassene og funksjonene uten å ringe det.
- Ringer til hovedfunksjonen () og begynnelsen av kroppen til hovedfunksjonen ().
- En kommentar. C ++ - kompilatoren hopper over dette.
- Erklærer en matrise som heter alder for å lagre 5 heltall.
- Opprette en heltalspeker s.
- Tilordne p verdien til adressen til det første elementet i matrixalderen.
- En kommentar. C ++ - kompilatoren hopper over dette.
- Skriv ut litt tekst på konsollen.
- Lag et heltall x ved hjelp av a for en loop. {Markerer begynnelsen på kroppen til en løkke.
- Skriv ut verdiene til x kombinert med litt annen tekst på konsollen.
- Skriv ut verdiene til * (p + x) på konsollen.
- Slutten av kroppen til en løkke.
- Skriv ut litt tekst på konsollen.
- Lag en variabel x ved hjelp av a for en loop. {Markerer begynnelsen på kroppen til for-sløyfen.
- Skriv ut verdiene på x fra 0 til 4 sammen med annen tekst.
- Skriv ut verdiene på * (alder + x).
- Enden på kroppen til forløkken.
- Returner verdi hvis programmet kjører vellykket.
- Slutten av kroppen til hovedfunksjonen ().
Få tilgang til verdiene til en matrise
Elementene i en matrise er tilgjengelige ved hjelp av deres respektive indekser. Indeksen til elementet som skal åpnes legges til innen firkantede parenteser [] umiddelbart etter matrisenavnet. For eksempel:
int john = age[2];I eksemplet ovenfor sier vi ganske enkelt at johns alder er lagret i indeks 2 av matrisen som heter alder. Dette betyr at johns alder er den tredje verdien i matrixalderen. Her er et komplett C ++ eksempel som viser hvordan du får tilgang til og skriver ut denne verdien:
#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"< Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkludert iostream header-fil i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkludert std navneområdet for å bruke klassene og funksjonene uten å ringe det.
- Ringer til hovedfunksjonen () der koden skal legges til.
- Start av en hoveddel () -funksjon.
- Erklærer en matrise som heter alder for å lagre 5 heltallelementer.
- Få tilgang til verdien som er lagret i indeks 2 av matrixalderen og lagre verdien i en variabel som heter john.
- Skriver ut verdien av variabel john på konsollen sammen med annen tekst.
Fordeler med en matrise i C ++
Her er fordeler / fordeler ved å bruke Array i C ++:
- Matriseelementer kan lett krysses.
- Enkel å manipulere matrisedata.
- Matriseelementer kan nås tilfeldig.
- Arrays letter kodeoptimalisering; Derfor kan vi utføre mye arbeid med mindre kode.
- Enkel å sortere matrisedata.
Ulemper med en matrise i C ++
- En matrise har en fast størrelse; Derfor kan vi ikke legge til nye elementer etter initialisering.
- Å tildele mer minne enn kravet fører til sløsing med minne, og mindre tildeling av minne kan skape et problem.
- Antall elementer som skal lagres i en matrise må være kjent på forhånd.
Sammendrag
- En matrise er en datastruktur som lagrer elementer av samme datatype.
- Matriseelementer lagres sekvensielt.
- Matriseelementene er betegnet ved hjelp av deres respektive indekser. Det første elementet er ved indeks 0, mens det siste elementet er ved indeks n-1, hvor er det totale antallet matriseelementer.
- Erklæringen om en matrise innebærer å definere datatypene til matriseelementene samt antall elementer som skal lagres i matrisen.
- Et endimensjonalt utvalg lagrer elementer sekvensielt.
- En todimensjonal matrise lagrer elementer i rader og kolonner.
- En tredimensjonal matrise er en rekke matriser.
- Elementer kan legges til en matrise ved hjelp av indeksene.
- Du får tilgang til matriseelementer ved hjelp av indeksene.
- En flerdimensjonal matrise har mer enn en dimensjon.
- Matrisenavnet peker på det første elementet.
- Arrays har en fast størrelse, noe som betyr at nye elementer ikke kan legges til matrisen etter initialiseringen.