logo

Matrius C++

En C++, una matriu és una estructura de dades que s'utilitza per emmagatzemar diversos valors de tipus de dades similars en una ubicació de memòria contigua.

Per exemple , si hem d'emmagatzemar les notes de 4 o 5 estudiants, les podem emmagatzemar fàcilment creant 5 variables diferents, però què passa si volem emmagatzemar les notes de 100 estudiants o dir 500 estudiants, llavors esdevé molt difícil crear aquest nombre de variables? i gestionar-los. Ara, apareixen matrius que poden fer-ho fàcilment amb només crear una matriu de la mida requerida.

Matrius-en-C++



Propietats de les matrius en C++

  • Una matriu és una col·lecció de dades del mateix tipus de dades, emmagatzemades en una ubicació de memòria contigua.
  • La indexació d'una matriu comença des de 0. Significa que el primer element s'emmagatzema a l'índex 0, el segon al primer, i així successivament.
  • Es pot accedir als elements d'una matriu mitjançant els seus índexs.
  • Una vegada que es declara una matriu, la seva mida es manté constant durant tot el programa.
  • Una matriu pot tenir diverses dimensions.
  • La mida de la matriu en bytes es pot determinar mitjançant l'operador sizeof amb el qual també podem trobar el nombre d'elements de la matriu.
  • Podem trobar la mida del tipus d'elements emmagatzemats en una matriu restant adreces adjacents.

Declaració de matriu en C++

En C++, podem declarar una matriu simplement especificant primer el tipus de dades i després el nom d'una matriu amb la seva mida.

data_type array_name[Size_of_array];>

Exemple

int arr[5];>

Aquí,

  • int: És el tipus de dades que s'emmagatzemen a la matriu. També podem utilitzar altres tipus de dades com ara char, float i double.
  • arr: És el nom de la matriu.
  • 5: És la mida de la matriu, el que significa que només es poden emmagatzemar 5 elements a la matriu.

declaració de matriu en c++

Inicialització de Array en C++

En C++, podem inicialitzar una matriu de moltes maneres, però parlarem d'algunes de les maneres més habituals d'inicialitzar una matriu. Podem inicialitzar una matriu en el moment de la declaració o després de la declaració.

1. Inicialitzar la matriu amb valors en C++

Hem inicialitzat la matriu amb valors. Els valors inclosos entre claus '{}' s'assignen a la matriu. Aquí, 1 s'emmagatzema a arr[0], 2 a arr[1], i així successivament. Aquí la mida de la matriu és 5.

int arr[5] = {1, 2, 3, 4, 5};>

2. Inicialitzar Array amb valors i sense mida en C++

Hem inicialitzat la matriu amb valors però no hem declarat la longitud de la matriu, per tant, la longitud d'una matriu és igual al nombre d'elements dins de claus.

matriu de làtex
int arr[] = {1, 2, 3, 4, 5};>

3. Inicialitzar la matriu després de la declaració (utilitzant bucles)

Hem inicialitzat la matriu mitjançant un bucle després de declarar la matriu. Aquest mètode s'utilitza generalment quan volem rebre l'entrada de l'usuari o no podem assignar elements un per un a cada índex de la matriu. Podem modificar les condicions del bucle o canviar els valors d'inicialització segons els requisits.

for (int i = 0; i   arr[i] = value; }>

4. Inicialitzeu parcialment una matriu en C++

Aquí, hem declarat una matriu 'partialArray' amb mida '5' i només amb valors '1' i '2'. Així, aquests valors s'emmagatzemen als dos primers índexs, i a la resta d'índexs s'emmagatzema '0'.

int partialArray[5] = {1, 2};>

5. Inicialitzeu la matriu amb zero en C++

Podem inicialitzar la matriu amb tots els elements com a '0' especificant '0' dins de les claus. Això passarà en cas de zero només si intentem inicialitzar la matriu amb un valor diferent, digues '2' mitjançant aquest mètode, llavors '2' s'emmagatzema només a l'índex 0.

int zero_array[5] = {0};>

Accés a un element d'una matriu en C++

Es pot accedir als elements d'una matriu especificant el nom de la matriu, després l'índex de l'element inclòs a l'operador de subíndex de matriu []. Per exemple, arr[i].

Exemple 1: el programa C++ per il·lustrar com accedir als elements de matriu

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; }>

Sortida
arr[0]: 10 arr[1]: 20 arr[2]: 30>

Actualitza l'element de matriu

Per actualitzar un element d'una matriu, podem utilitzar l'índex que volem actualitzar inclòs dins de l'operador de subíndex de matriu i assignar el nou valor.

arr[i] = new_value;>

Travessa una matriu en C++

Podem recórrer la matriu amb l'ajuda d'un bucle utilitzant la indexació en C++. Primer, hem inicialitzat una matriu 'taula_de_dos' amb un múltiple de 2. Després d'això, executem un bucle for de 0 a 9 perquè en una matriu la indexació comença des de zero. Per tant, utilitzant els índexs imprimim tots els valors emmagatzemats en una matriu.

Exemple 2: El programa C++ per il·lustrar com recórrer una matriu

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; }>

Sortida
2 4 6 8 10 12 14 16 18 20>

Mida d'una matriu en C++

En C++, no tenim la funció de longitud com a Java per trobar la mida de la matriu, però podem calcular la mida d'una matriu mitjançant l'operador sizeof(). truc. Primer, trobem la mida que ocupa tota la matriu a la memòria i després la dividim per la mida del tipus d'element emmagatzemat a la matriu. Això ens donarà el nombre d'elements emmagatzemats a la matriu.

data_type size = sizeof(Array_name) / sizeof(Array_name[index]);>

Exemple 3: el programa C++ per il·lustrar com trobar la mida d'una matriu

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; }>

Sortida
Size of arr[0]: 4 Size of arr: 20 Length of an array: 5>

Relació entre matrius i punters en C++

En C++, les matrius i els punters estan estretament relacionats entre si. El nom de la matriu es tracta com un punter que emmagatzema l'adreça de memòria del primer element de la matriu. Com hem comentat anteriorment, els elements In array s'emmagatzemen en ubicacions de memòria contigües, per això podem accedir a tots els elements d'una matriu utilitzant el nom de la matriu.

Exemple 4: il·lustració de la relació entre matriu i punters

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; }>

Sortida
Memory address of arr: 0x7fff2f2cabb0 Memory address of arr: 0x7fff2f2cabb0>

Explicació:

Al codi anterior, primer definim una matriu arr i després declarar un punter ptr i assigneu-li la matriu arr. Podem assignar arr a ptr perquè arr també és un punter. Després d'això, imprimim l'adreça de memòria de arr utilitzant l'operador de referència ( & ) i també imprimeix l'adreça emmagatzemada al punter ptr i podem veure arr i ptr, tots dos emmagatzemen la mateixa adreça de memòria.

Exemple 5: Impressió d'elements de matriu sense indexació en C++

En general, accedim i imprimim els elements de la matriu mitjançant la indexació. Per exemple per accedir al primer element que utilitzem nom_matriu[0]. Hem comentat anteriorment que el nom de la matriu és un punter que emmagatzema l'adreça del primer element i els elements de la matriu s'emmagatzemen en ubicacions contigües. Ara, accedirem als elements d'una matriu utilitzant només el nom de la matriu.

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; }>

Sortida
first element: 11 Second element: 22 Third element: 33 fourth element: 44>

Explicació

Al codi anterior, primer vam declarar una matriu arr amb quatre elements. Després d'això, estem imprimint els elements de la matriu. Parlem de com ho fem. Hem comentat que el nom de la matriu és un punter que emmagatzema l'adreça del primer element d'una matriu, per tant, per imprimir el primer element hem desreferenciat aquest punter (*arr) utilitzant l'operador de desreferenciació (*) que imprimeix les dades emmagatzemades en aquesta adreça.

Per imprimir el segon element d'una matriu primer afegim 1 a arr que és equivalent a (adreça d'arr + size_of_one_element *1) que porta el punter a l'adreça just després de la primera i després d'això, desferem aquest punter per imprimir el segon element. De la mateixa manera, imprimim la resta dels elements d'una matriu sense utilitzar la indexació.

Passant Array a Function en C++

Per utilitzar matrius de manera eficient hauríem de saber com passar matrius perquè funcionin. Podem passar matrius a funcions com a argument igual que passem variables a funcions, però sabem que el nom de la matriu es tracta com un punter utilitzant aquest concepte, podem passar la matriu a les funcions com a argument i després accedir a tots els elements d'aquesta matriu utilitzant punter.

Així, en definitiva, Les matrius sempre es passen com a punters a la funció. Vegem 3 maneres de passar una matriu a una funció que s'utilitzen principalment.

1. Passant Array com a punter

En aquest mètode, simplement passem el nom de la matriu a la trucada de funció, el que significa que passem l'adreça al primer element de la matriu. En aquest mètode, podem modificar els elements de la matriu dins de la funció.

Sintaxi

return_type   function_name   (   data_type *array_name   ) {     // set of statements  }>

2. Passant la matriu com a matriu sense mida

En aquest mètode, la funció accepta la matriu utilitzant una declaració de matriu simple sense mida com a argument.

Sintaxi

return_type   function_name    ( data_type array_name[]   ) {    // set of statements  }>

3. Passant la matriu com a matriu de mida

En aquest mètode, la funció accepta la matriu utilitzant una declaració de matriu simple amb la mida com a argument. Utilitzem aquest mètode dimensionant una matriu només per indicar la mida d'una matriu.

Sintaxi

return_type function_name(data_type array_name[size_of_array]){  // set of statements }>

Nota: Array es tractarà com un punter a la funció passada, independentment del mètode que utilitzem. A mesura que la matriu es passa com a punters, perdran la informació sobre la seva mida donant lloc a un fenomen anomenat com Array Decaiment.

Exemple: il·lustració de diferents maneres de passar matrius a una funció

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; }>

Sortida
Array as Sized Array Argument: 10 20 30 Array as Unsized Array Argument: 10 20 30 Array as Pointer Argument: 10 20 30>

Matrius multidimensionals en C++

Les matrius declarades amb més d'una dimensió s'anomenen matrius multidimensionals. Les matrius multidimensionals més utilitzades són les matrius 2D i les matrius 3D. Aquestes matrius es representen generalment en forma de files i columnes.

Declaració de matriu multidimensional

Data_Type Array_Name[Size1][Size2]...[SizeN];>

on,

  • Tipus de dades: Tipus de dades a emmagatzemar a la matriu.
  • Nom_matriu: Nom de la matriu.
  • Talla 1, Talla 2,…, Talla N: Mida de cada dimensió.

Matriu bidimensional en C++

En C++, una matriu bidimensional és una agrupació d'elements disposats en files i columnes. S'accedeix a cada element mitjançant dos índexs: un per a la fila i un altre per a la columna, la qual cosa facilita la visualització com a taula o quadrícula.

Sintaxi de la matriu 2D

data_Type array_name[n][m];>

On,

  • n: Nombre de files.
  • m: Nombre de columnes.
    matriu bidimensional en c++

Exemple: el programa C++ per il·lustrar la matriu bidimensional

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; }>

Sortida
0 1 2 3 1 2 3 4 2 3 4 5 3 4 5 6>

Explicació

Al codi anterior hem declarat una matriu 2D amb 4 files i 4 columnes després d'això hem inicialitzat la matriu amb el valor de (i+j) en cada iteració del bucle. A continuació, estem imprimint la matriu 2D mitjançant un bucle imbricat i podem veure a la sortida següent que hi ha 4 files i 4 columnes.

Matriu tridimensional en C++

La matriu 3D utilitza tres dimensions. Es pot utilitzar una col·lecció de diverses matrius bidimensionals amuntegades una sobre l'altra per representar-la. Tres índexs: l'índex de fila, l'índex de columna i l'índex de profunditat s'utilitzen per identificar de manera única cada element d'una matriu 3D.

Declaració de matriu tridimensional en C++

Per declarar una matriu 3D en C++, hem d'especificar la seva tercera dimensió juntament amb les dimensions 2D.

Data_Type Array_Name[D][R][C];>

On,

  • Tipus de dades: Tipus de dades a emmagatzemar en cada element.
  • Nom_matriu: Nom de la matriu
  • D: Nombre de matrius 2D o profunditat de matriu.
  • R: Nombre de files a cada matriu 2D.
  • C: Nombre de columnes a cada matriu 2D.

Exemple

int array[3][3][3];>

matriu tridimensional en c++

Exemple: el programa C++ per il·lustrar la matriu 3d

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; }>

Sortida
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>

Explicació

Al codi anterior, hem declarat una matriu 3D i després l'hem inicialitzat utilitzant tres bucles for imbricats. Després d'això, vam tornar a imprimir totes les capes de la matriu 3D utilitzant tres bucles for imbricats com es veu a la sortida.

Articles relacionats

  • Matrius multidimensionals en C++
  • Propietats de Array
  • Array Decaiment