I denne opplæringen vil vi lære å jobbe med matriser. Vi lærer å erklære, initialisere og få tilgang til matriseelementer i C ++ programmering ved hjelp av eksempler.
I C ++ er en matrise en variabel som kan lagre flere verdier av samme type. For eksempel,
Anta at en klasse har 27 elever, og vi må lagre karakterene til dem alle. I stedet for å lage 27 separate variabler, kan vi ganske enkelt opprette en matrise:
double grade(27);
Her er karakter en matrise som kan inneholde maksimalt 27 elementer av double
typen.
I C ++ kan ikke størrelsen og typen matriser endres etter erklæringen.
C ++ Array Declaration
dataType arrayName(arraySize);
For eksempel,
int x(6);
Her,
int
- type element som skal lagres- x - navnet på matrisen
6
- størrelsen på matrisen
Få tilgang til elementer i C ++ Array
I C ++ er hvert element i en matrise assosiert med et tall. Tallet er kjent som en matriseindeks. Vi kan få tilgang til elementer i en matrise ved å bruke disse indeksene.
// syntax to access array elements array(index);
Tenk på matrisen x vi har sett ovenfor.

Få ting å huske:
- Arrayindeksene starter med
0
. Betydningen x (0) er det første elementet som er lagret i indeksen0
. - Hvis størrelsen på en matrise er
n
, lagres det siste elementet i indeksen(n-1)
. I dette eksemplet er x (5) det siste elementet. - Elementer i en matrise har påfølgende adresser. Anta for eksempel at startadressen til
x(0)
er 2120d. Deretter vil adressen til det neste elementetx(1)
være 2124d, adressen tilx(2)
vil være 2128d og så videre.
Her økes størrelsen på hvert element med 4. Dette skyldes at størrelsen påint
er 4 byte.
C ++ Array initialisering
I C ++ er det mulig å initialisere en matrise under erklæringen. For eksempel,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);

En annen metode for å initialisere array under erklæring:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Her har vi ikke nevnt størrelsen på matrisen. I slike tilfeller beregner kompilatoren automatisk størrelsen.
C ++ Array med tomme medlemmer
I C ++, hvis en matrise har en størrelse n
, kan vi lagre opptil n antall elementer i matrisen. Men hva vil skje hvis vi lagrer mindre enn n antall elementer.
For eksempel,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Her har matrisen x en størrelse på 6
. Imidlertid har vi initialisert den med bare 3 elementer.
I slike tilfeller tildeler kompilatoren tilfeldige verdier til de gjenværende stedene. Ofte er denne tilfeldige verdien ganske enkelt 0
.

Hvordan setter jeg inn og skriver ut matriseelementer?
int mark(5) = (19, 10, 8, 17, 9) // change 4th element to 9 mark(3) = 9; // take input from the user // store the value at third position cin>> mark(2); // take input from the user // insert at ith position cin>> mark(i-1); // print first element of the array cout <> mark(i-1);
Eksempel 1: Vis arrayelementer
#include using namespace std; int main() ( int numbers(5) = (7, 5, 6, 12, 35); cout << "The numbers are: "; // Printing array elements // using range based for loop for (const int &n : numbers) ( cout << n << " "; ) cout << "The numbers are: "; // Printing array elements // using traditional for loop for (int i = 0; i < 5; ++i) ( cout << numbers(i) << " "; ) return 0; )
Produksjon
Tallene er: 7 5 6 12 35 Tallene er: 7 5 6 12 35
Her har vi brukt en for
løkke til å gjenta fra i = 0
til i = 4
. I hver iterasjon har vi skrevet ut numbers(i)
.
Vi brukte igjen et område basert på loop for å skrive ut elementene i matrisen. For å lære mer om denne sløyfen, sjekk C ++ Ranged for Loop.
Merk: I vår områdebaserte sløyfe har vi brukt koden i const int &n
stedet for int n
som områdedeklarasjonen. Imidlertid er det const int &n
mer foretrukket fordi:
- Ved å bruke
int n
kopierer du bare matriseelementene til variabelen n under hver iterasjon. Dette er ikke minneeffektivt.
& n bruker imidlertid minneadressen til matriseelementene for å få tilgang til dataene uten å kopiere dem til en ny variabel. Dette er minneeffektivt. - Vi skriver ganske enkelt ut matriseelementene, og endrer dem ikke. Derfor bruker vi
const
for ikke å endre verdiene til matrisen ved et uhell.
Eksempel 2: Ta innspill fra bruker og lagre dem i en matrise
#include using namespace std; int main() ( int numbers(5); cout << "Enter 5 numbers: " << endl; // store input from user to array for (int i = 0; i > numbers(i); ) cout << "The numbers are: "; // print array elements for (int n = 0; n < 5; ++n) ( cout << numbers(n) << " "; ) return 0; )
Produksjon
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers(i)
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include using namespace std; int main() ( // initialize an array without specifying size double numbers() = (7, 5, 6, 12, 35, 27); double sum = 0; double count = 0; double average; cout << "The numbers are: "; // print array elements // use of range-based for loop for (const double &n : numbers) ( cout << n << " "; // calculate the sum sum += n; // count the no. of array elements ++count; ) // print the sum cout << "Their Sum = " << sum << endl; // find the average average = sum / count; cout << "Their Average = " << average << endl; return 0; )
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - Vi øker også tellingsverdien med
1
i hver iterasjon, slik at vi kan få størrelsen på matrisen ved slutten av for loop. - Etter å ha skrevet ut alle elementene, skriver vi ut summen og gjennomsnittet av alle tallene. Gjennomsnittet av tallene er gitt av
average = sum / count;
Merk: Vi brukte en for
sløyfe i stedet for en vanlig for
sløyfe.
En normal for
sløyfe krever at vi spesifiserer antall iterasjoner, gitt av størrelsen på matrisen.
Men en rekkevidde for
krever ikke slike spesifikasjoner.
C ++ Array Out of Bounds
Hvis vi erklærer en matrise med størrelse 10, vil matrisen inneholde elementer fra indeks 0 til 9.
Imidlertid, hvis vi prøver å få tilgang til elementet ved indeks 10 eller mer enn 10, vil det resultere i udefinert atferd.