V C++ je matrika podatkovna struktura, ki se uporablja za shranjevanje več vrednosti podobnih tipov podatkov na sosednji pomnilniški lokaciji.
Na primer , če moramo shraniti ocene 4 ali 5 učencev, jih lahko preprosto shranimo tako, da ustvarimo 5 različnih spremenljivk, a kaj, če želimo shraniti ocene 100 učencev ali recimo 500 učencev, postane zelo zahtevno ustvariti to število spremenljivk in jih upravljati. Zdaj pridejo na podobo nizi, ki lahko to storijo preprosto tako, da samo ustvarijo niz zahtevane velikosti.

Lastnosti nizov v C++
- Matrika je zbirka podatkov iste podatkovne vrste, shranjenih na sosednji pomnilniški lokaciji.
- Indeksiranje matrike se začne od 0. To pomeni, da je prvi element shranjen na 0. indeksu, drugi na 1. in tako naprej.
- Do elementov matrike je mogoče dostopati z njihovimi indeksi.
- Ko je matrika deklarirana, njena velikost ostane konstantna v celotnem programu.
- Matrika ima lahko več dimenzij.
- Velikost matrike v bajtih lahko določimo z operatorjem sizeof, s pomočjo katerega lahko ugotovimo tudi število elementov v matriki.
- Velikost vrste elementov, shranjenih v matriki, lahko ugotovimo tako, da odštejemo sosednje naslove.
Deklaracija matrike v C++
V C++ lahko matriko deklariramo tako, da najprej preprosto določimo podatkovni tip in nato ime matrike z njeno velikostjo.
data_type array_name[Size_of_array];>
Primer
int arr[5];>
tukaj,
- int: To je vrsta podatkov, ki se shranijo v polje. Uporabljamo lahko tudi druge vrste podatkov, kot so char, float in double.
- prihod: To je ime niza.
- 5: To je velikost matrike, kar pomeni, da je v matriko mogoče shraniti samo 5 elementov.

Inicializacija matrike v C++
V C++ lahko matriko inicializiramo na več načinov, vendar bomo razpravljali o nekaterih najpogostejših načinih inicializacije matrike. Matriko lahko inicializiramo v času deklaracije ali po deklaraciji.
1. Inicializirajte matriko z vrednostmi v C++
Inicializirali smo niz z vrednostmi. Vrednosti v zavitih oklepajih ‘{}’ so dodeljene matriki. Tu je 1 shranjen v arr[0], 2 v arr[1] itd. Tukaj je velikost niza 5.
int arr[5] = {1, 2, 3, 4, 5};>2. Inicializirajte matriko z vrednostmi in brez velikosti v C++
Matriko smo inicializirali z vrednostmi, vendar nismo deklarirali dolžine matrike, zato je dolžina matrike enaka številu elementov znotraj zavitih oklepajev.
prečkanje binarnega drevesa po pošti
int arr[] = {1, 2, 3, 4, 5};>3. Inicializirajte matriko po deklaraciji (z uporabo zank)
Matriko smo inicializirali z uporabo zanke po deklaraciji matrike. Ta metoda se običajno uporablja, ko želimo prejeti vnos od uporabnika ali ne moremo dodeliti elementov enega za drugim vsakemu indeksu matrike. Spreminjamo lahko pogoje zanke ali spreminjamo inicializacijske vrednosti v skladu z zahtevami.
for (int i = 0; i arr[i] = value; }>
4. Delno inicializirajte matriko v C++
Tukaj smo deklarirali matriko 'partialArray' z velikostjo '5' in samo z vrednostma '1' in '2'. Torej so te vrednosti shranjene pri prvih dveh indeksih, pri preostalih indeksih pa je shranjena '0'.
int partialArray[5] = {1, 2};>5. Inicializirajte matriko z ničlo v C++
Matriko z vsemi elementi lahko inicializiramo kot '0', tako da podamo '0' znotraj zavitih oklepajev. To se bo zgodilo v primeru ničle le, če poskusimo inicializirati matriko z drugačno vrednostjo, recimo '2', s to metodo, potem pa je '2' shranjen samo pri 0. indeksu.
int zero_array[5] = {0};>Dostop do elementa matrike v C++
Do elementov matrike lahko dostopate tako, da podate ime matrike in nato indeks elementa, ki je obdan v operatorju indeksa matrike []. Na primer arr[i].
Primer 1: Program C++ za ponazoritev dostopa do elementov polja
C++ // C++ Program to Illustrate How to Access Array Elements #include using namespace std; int main() { int arr[3]; // Inserting elements in an array arr[0] = 10; arr[1] = 20; arr[2] = 30; // Accessing and printing elements of the array cout << 'arr[0]: ' << arr[0] << endl; cout << 'arr[1]: ' << arr[1] << endl; cout << 'arr[2]: ' << arr[2] << endl; return 0; }> Izhod
arr[0]: 10 arr[1]: 20 arr[2]: 30>
Posodobi element polja
Za posodobitev elementa v matriki lahko uporabimo indeks, ki ga želimo posodobiti, priložen znotraj operatorja indeksa matrike in dodelimo novo vrednost.
arr[i] = new_value;>
Prečkaj matriko v C++
Po nizu lahko prečkamo s pomočjo zanke z uporabo indeksiranja v C++. Najprej smo inicializirali matriko 'table_of_two' z večkratnikom 2. Po tem zaženemo zanko for od 0 do 9, ker se v matriki indeksiranje začne od nič. Zato z uporabo indeksov natisnemo vse vrednosti, shranjene v matriki.
Primer 2: Program C++ za ponazoritev, kako prečkati matriko
C++ // C++ Program to Illustrate How to Traverse an Array #include using namespace std; int main() { // Initialize the array int table_of_two[10] = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 }; // Traverse the array using for loop for (int i = 0; i < 10; i++) { // Print the array elements using indexing cout << table_of_two[i] << ' '; } return 0; }> Izhod
2 4 6 8 10 12 14 16 18 20>
Velikost matrike v C++
V C++ nimamo funkcije dolžine kot v Javi za iskanje velikosti polja, ampak lahko izračunamo velikost matrike z uporabo operatorja sizeof(). trik. Najprej poiščemo velikost celotne matrike v pomnilniku in jo nato delimo z velikostjo vrste elementa, shranjenega v matriki. To nam bo dalo število elementov, shranjenih v matriki.
data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>
Primer 3: Program C++ za ponazoritev, kako najti velikost matrike
C++ // C++ Program to Illustrate How to Find the Size of an // Array #include using namespace std; int main() { int arr[] = { 1, 2, 3, 4, 5 }; // Size of one element of an array cout << 'Size of arr[0]: ' << sizeof(arr[0]) << endl; // Size of array 'arr' cout << 'Size of arr: ' << sizeof(arr) << endl; // Length of an array int n = sizeof(arr) / sizeof(arr[0]); cout << 'Length of an array: ' << n << endl; return 0; }> Izhod
Size of arr[0]: 4 Size of arr: 20 Length of an array: 5>
Odnos med nizi in kazalci v C++
V C++ so nizi in kazalci med seboj tesno povezani. Ime matrike se obravnava kot kazalec, ki je shranil pomnilniški naslov prvega elementa matrike. Kot smo že omenili, so elementi v matriki shranjeni na sosednjih pomnilniških lokacijah, zato lahko dostopamo do vseh elementov matrike z imenom matrike.
Primer 4: Ponazoritev razmerja med matriko in kazalci
C++ // C++ Program to Illustrate that Array Name is a Pointer // that Points to First Element of the Array #include using namespace std; int main() { // Defining an array int arr[] = { 1, 2, 3, 4 }; // Define a pointer int* ptr = arr; // Printing address of the arrary using array name cout << 'Memory address of arr: ' << &arr << endl; // Printing address of the array using ptr cout << 'Memory address of arr: ' << ptr << endl; return 0; }> Izhod
Memory address of arr: 0x7fff2f2cabb0 Memory address of arr: 0x7fff2f2cabb0>
Pojasnilo:
V zgornji kodi najprej definiramo matriko prir in nato deklarirajte kazalec ptr in mu dodeli matriko arr. Ptr lahko dodelimo arr, ker je arr tudi kazalec. Po tem natisnemo pomnilniški naslov prir z uporabo referenčnega operatorja ( & ) in natisnete tudi naslov, shranjen v kazalcu ptr in lahko vidimo arr in ptr, oba shranjujeta isti pomnilniški naslov.
Primer 5: Tiskanje elementov polja brez indeksiranja v C++
Do elementov matrike običajno dostopamo in jih tiskamo z indeksiranjem. Na primer za dostop do prvega elementa, ki ga uporabimo ime_matrike[0]. Zgoraj smo razpravljali o tem, da je ime matrike kazalec, ki shrani naslov prvega elementa, elementi matrike pa so shranjeni na sosednjih lokacijah. Zdaj bomo do elementov matrike dostopali samo z imenom matrike.
C++ // C++ Program to Print Array Elements without Indexing #include using namespace std; int main() { // Define an array int arr[] = { 11, 22, 33, 44 }; // Print elements of an array cout << 'first element: ' << *arr << endl; cout << 'Second element: ' << *(arr + 1) << endl; cout << 'Third element: ' << *(arr + 2) << endl; cout << 'fourth element: ' << *(arr + 3) << endl; return 0; }> Izhod
first element: 11 Second element: 22 Third element: 33 fourth element: 44>
Pojasnilo
V zgornji kodi smo najprej deklarirali matriko prir s štirimi elementi. Nato natisnemo elemente polja. Pogovorimo se o tem, kako to naredimo. Razpravljali smo o tem, da je ime matrike kazalec, ki shrani naslov prvega elementa matrike, tako da smo za tiskanje prvega elementa ta kazalec dereferencirali (*arr) z uporabo operaterja dereferenciranja (*) ki natisne podatke, shranjene na tem naslovu.
Za tiskanje drugega elementa matrike najprej dodamo 1 do prir kar je enakovredno (naslov arr + size_of_one_element *1), ki popelje kazalec na naslov takoj za prvim in za tem ta kazalec razimenujemo za tiskanje drugega elementa. Podobno natisnemo preostale elemente matrike brez uporabe indeksiranja.
Prenos matrike v funkcijo v C++
Za učinkovito uporabo nizov bi morali vedeti, kako posredovati nize funkciji. Funkcijam lahko posredujemo matrike kot argument, enako kot spremenljivke funkcijam, vendar vemo, da se ime matrike obravnava kot kazalec. S tem konceptom lahko matriko posredujemo funkcijam kot argument in nato dostopamo do vseh elementov te matrike z kazalec.
Torej na koncu, polja se vedno posredujejo kot kazalci na funkcijo. Oglejmo si 3 načine za posredovanje matrike funkciji, ki se večinoma uporabljajo.
1. Posredovanje matrike kot kazalca
Pri tej metodi preprosto posredujemo ime matrike v klicu funkcije, kar pomeni, da posredujemo naslov prvemu elementu matrike. Pri tej metodi lahko spreminjamo elemente polja znotraj funkcije.
Sintaksa
return_type function_name ( data_type *array_name ) { // set of statements }>2. Posredovanje matrike kot matrike brez velikosti
Pri tej metodi funkcija sprejme matriko z uporabo preproste deklaracije matrike brez velikosti kot argumenta.
Sintaksa
return_type function_name ( data_type array_name[] ) { // set of statements }>3. Posredovanje matrike kot matrike velikosti
Pri tej metodi funkcija sprejme matriko z uporabo preproste deklaracije matrike z velikostjo kot argumentom. To metodo uporabljamo tako, da določimo velikost matrike samo za prikaz velikosti matrike.
Sintaksa
return_type function_name(data_type array_name[size_of_array]){ // set of statements }> Opomba: Matrika bo obravnavana kot kazalec v posredovani funkciji, ne glede na to, katero metodo uporabimo. Ko se matrika posreduje kot kazalci, bodo izgubili informacije o njeni velikosti, kar vodi do pojava, imenovanega Razpad niza.
Primer: ponazoritev različnih načinov posredovanja nizov v funkcijo
C++ #include using namespace std; // passing array as a sized array argument void printArraySized(int arr[3], int n) { cout << 'Array as Sized Array Argument: '; for (int i = 0; i < n; i++) { cout << arr[i] << ' '; } cout << endl; } // passing array as an unsized array argument void printArrayUnsized(int arr[], int n) { cout << 'Array as Unsized Array Argument: '; for (int i = 0; i < n; i++) { cout << *(arr + i) << ' '; } cout << endl; } // Passing array as a pointer argument void printArrayPointer(int* ptr, int n) { // Print array elements using pointer ptr // that store the address of array passed cout << 'Array as Pointer Argument: '; for (int i = 0; i < n; i++) { cout << ptr[i] << ' '; } } // driver code int main() { int arr[] = { 10, 20, 30 }; // Call function printArray and pass // array and its size to it. printArraySized(arr, 3); printArrayUnsized(arr, 3); printArrayPointer(arr, 3); return 0; }> Izhod
Array as Sized Array Argument: 10 20 30 Array as Unsized Array Argument: 10 20 30 Array as Pointer Argument: 10 20 30>
Večdimenzionalni nizi v C++
Nizi, deklarirani z več kot eno dimenzijo, se imenujejo večdimenzionalni nizi. Najbolj razširjena večdimenzionalna polja so 2D polja in 3D polja. Ti nizi so na splošno predstavljeni v obliki vrstic in stolpcev.
Deklaracija večdimenzionalne matrike
Data_Type Array_Name[Size1][Size2]...[SizeN];>
kje,
- Data_Type: Vrsta podatkov, ki bodo shranjeni v matriki.
- Ime_matrike: Ime matrike.
- Velikost1, Velikost2,…, VelikostN: Velikost vsake dimenzije.
Dvodimenzionalna matrika v C++
V C++ je dvodimenzionalna matrika skupina elementov, razporejenih v vrstice in stolpce. Do vsakega elementa se dostopa z uporabo dveh indeksov: enega za vrstico in enega za stolpec, kar olajša vizualizacijo kot tabelo ali mrežo.
Sintaksa 2D polja
data_Type array_name[n][m];>
Kje,
- n: Število vrstic.
- m: Število stolpcev.

Primer: program C++ za ponazoritev dvodimenzionalne matrike
C++ // c++ program to illustrate the two dimensional array #include using namespace std; int main() { // Declaring 2D array int arr[4][4]; // Initialize 2D array using loop for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { arr[i][j] = i + j; } } // Printing the element of 2D array for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { cout << arr[i][j] << ' '; } cout << endl; } return 0; }> Izhod
0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6>
Pojasnilo
V zgornji kodi smo deklarirali 2D matriko s 4 vrsticami in 4 stolpci, potem pa smo inicializirali matriko z vrednostjo (i+j) v vsaki ponovitvi zanke. Nato natisnemo 2D matriko z uporabo ugnezdene zanke in v spodnjem izpisu lahko vidimo, da so 4 vrstice in 4 stolpci.
Tridimenzionalna matrika v C++
3D niz uporablja tri dimenzije. Za predstavitev se lahko uporabi zbirka različnih dvodimenzionalnih nizov, naloženih drug na drugega. Trije indeksi – indeks vrstice, indeks stolpca in indeks globine se uporabljajo za edinstveno identifikacijo vsakega elementa v 3D-matriki.
Deklaracija tridimenzionalne matrike v C++
Za deklaracijo 3D-matrike v C++ moramo podati njeno tretjo dimenzijo skupaj z 2D-dimenzijami.
Data_Type Array_Name[D][R][C];>
Kje,
- Data_Type: Vrsta podatkov, ki bodo shranjeni v vsakem elementu.
- Ime_matrike: Ime matrike
- D: Število 2D nizov ali globina nizov.
- R: Število vrstic v vsakem 2D nizu.
- C: Število stolpcev v vsaki 2D matriki.
Primer
int array[3][3][3];>

Primer: program C++ za ponazoritev 3d polja
C++ // C++ program to illustrate the 3d array #include using namespace std; int main() { // declaring 3d array int arr[3][3][3]; // initializing the array for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { arr[i][j][k] = i + j + k; } } } // printing the array for (int i = 0; i < 3; i++) { cout << i << 'st layer:' << endl; for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { cout << arr[i][j][k] << ' '; } cout << endl; } cout << endl; } return 0; }> Izhod
0st layer: 0 1 2 1 2 3 2 3 4 1st layer: 1 2 3 2 3 4 3 4 5 2st layer: 2 3 4 3 4 5 4 5 6>
Pojasnilo
V zgornji kodi smo deklarirali 3D-matriko in jo nato inicializirali s tremi ugnezdenimi for zankami. Po tem smo znova natisnili vse plasti 3D-matrike z uporabo treh ugnezdenih for zank, kot je razvidno iz izhoda.
povezani članki
- Večdimenzionalni nizi v C++
- Lastnosti matrike
- Razpad niza
