În acest tutorial, vom învăța să lucrăm cu tablouri. Vom învăța să declarăm, să inițializăm și să accesăm elemente de matrice în programarea C ++ cu ajutorul unor exemple.
În C ++, o matrice este o variabilă care poate stoca mai multe valori de același tip. De exemplu,
Să presupunem că o clasă are 27 de studenți și că trebuie să păstrăm notele tuturor. În loc să creăm 27 de variabile separate, putem crea pur și simplu o matrice:
double grade(27);
Aici, nota este o matrice care poate conține maximum 27 de elemente de double
tip.
În C ++, dimensiunea și tipul matricelor nu pot fi modificate după declararea sa.
Declarație de matrice C ++
dataType arrayName(arraySize);
De exemplu,
int x(6);
Aici,
int
- tipul de element de stocat- x - numele matricei
6
- dimensiunea matricei
Elemente de acces în matrice C ++
În C ++, fiecare element dintr-o matrice este asociat cu un număr. Numărul este cunoscut sub numele de index de matrice. Putem accesa elemente ale unei matrice utilizând acești indici.
// syntax to access array elements array(index);
Luați în considerare matricea x pe care am văzut-o mai sus.

Câteva lucruri de reținut:
- Indicii matrice încep cu
0
. Înțelesul x (0) este primul element stocat la index0
. - Dacă dimensiunea unui tablou este
n
, ultimul element este stocat la index(n-1)
. În acest exemplu, x (5) este ultimul element. - Elementele unui tablou au adrese consecutive. De exemplu, să presupunem că adresa de pornire a
x(0)
este 2120d. Apoi, adresa următorului elementx(1)
va fi 2124d, adresa luix(2)
va fi 2128d și așa mai departe.
Aici, dimensiunea fiecărui element este mărită cu 4. Acest lucru se datorează faptului că dimensiunea luiint
este de 4 octeți.
Inițializarea matricei C ++
În C ++, este posibilă inițializarea unui tablou în timpul declarației. De exemplu,
// declare and initialize and array int x(6) = (19, 10, 8, 17, 9, 15);

O altă metodă de inițializare a matricei în timpul declarației:
// declare and initialize an array int x() = (19, 10, 8, 17, 9, 15);
Aici nu am menționat dimensiunea matricei. În astfel de cazuri, compilatorul calculează automat dimensiunea.
Matrice C ++ cu membri goali
În C ++, dacă o matrice are o dimensiune n
, putem stoca până la n număr de elemente în matrice. Cu toate acestea, ce se va întâmpla dacă stocăm mai puțin de n număr de elemente.
De exemplu,
// store only 3 elements in the array int x(6) = (19, 10, 8);
Aici, matricea x are o dimensiune de 6
. Cu toate acestea, am inițializat-o cu doar 3 elemente.
În astfel de cazuri, compilatorul atribuie valori aleatorii locurilor rămase. Adesea, această valoare aleatorie este pur și simplu 0
.

Cum se inserează și se tipăresc elementele matricei?
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);
Exemplul 1: Afișarea elementelor matrice
#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; )
Ieșire
Numerele sunt: 7 5 6 12 35 Numerele sunt: 7 5 6 12 35
Aici, am folosit o for
buclă pentru a itera de i = 0
la i = 4
. În fiecare iterație, am imprimat numbers(i)
.
Am folosit din nou o gamă bazată pe buclă pentru a imprima elementele matricei. Pentru a afla mai multe despre această buclă, verificați C ++ Ranged pentru Buclă.
Notă: În bucla noastră bazată pe interval, am folosit codul const int &n
în loc de int n
declarație de interval. Cu toate acestea, const int &n
este mai preferat deoarece:
- Folosind
int n
pur și simplu copiază elementele matricei variabilei n în timpul fiecărei iterații. Acest lucru nu este eficient din punct de vedere al memoriei.
& n, cu toate acestea, folosește adresa de memorie a elementelor matricei pentru a accesa datele lor fără a le copia într-o nouă variabilă. Aceasta este eficientă din punct de vedere al memoriei. - Pur și simplu tipărim elementele matricei, nu le modificăm. Prin urmare, folosim
const
pentru a nu modifica accidental valorile matricei.
Exemplul 2: preluați intrări de la utilizator și păstrați-le într-o matrice
#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; )
Ieșire
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. - De asemenea, creștem valoarea numărării cu
1
în fiecare iterație, astfel încât să putem obține dimensiunea matricei până la sfârșitul buclei for. - După tipărirea tuturor elementelor, imprimăm suma și media tuturor numerelor. Media numerelor este dată de
average = sum / count;
Notă: Am folosit o for
buclă la distanță în loc de o for
buclă normală .
O for
buclă normală ne cere să specificăm numărul de iterații, care este dat de dimensiunea matricei.
Dar o for
buclă la distanță nu necesită astfel de specificații.
C ++ Array Out of Bounds
Dacă declarăm o matrice de dimensiunea 10, atunci matricea va conține elemente de la indexul 0 la 9.
Cu toate acestea, dacă încercăm să accesăm elementul la indexul 10 sau mai mult de 10, va rezulta un Comportament nedefinit.