I C++ kan du bruge to­di­men­sio­nel­le arrays til at or­ga­ni­se­re data på en ta­bel­ag­tig måde. I matematik, især i lineær algebra, giver 2D-arrays en optimal struktur til at re­præ­sen­te­re matricer.

Hvad er en 2D-matrix i C++?

I C++ er en 2D-matrix en da­ta­struk­tur, der ar­ran­ge­rer elementer i et to­di­men­sio­nelt, ta­bel­ag­tigt format. I mod­sæt­ning til en­di­men­sio­nel­le matricer, der blot gemmer elementer i en sekvens, or­ga­ni­se­rer en 2D-matrix data i rækker og kolonner. Hvert element i en 2D-matrix iden­ti­fi­ce­res ved hjælp af dets række- og ko­lon­ne­in­deks, hvilket letter adgang til og ma­ni­pu­la­tion af in­di­vi­du­el­le da­ta­punk­ter. Fra ma­te­ma­ti­ske ope­ra­tio­ner med matricer til hånd­te­ring af ra­ster­da­ta er der mange for­skel­li­ge an­ven­del­ses­mu­lig­he­der for denne type matrix.

Hvordan er en 2D-matrix struk­tu­re­ret i C++?

I C++ består syntaksen til de­kla­re­ring af 2D-arrays af følgende elementer:

data_type arrayName[num_rows][num_cols];
c++
  • data_type: Datatypen angiver den type data, der skal gemmes i 2D-arrayet. Dette kan f.eks. være int for heltal, double for flydende tal eller bru­ger­de­fi­ne­re­de datatyper.
  • arrayName: Navnet fungerer som en iden­ti­fi­ka­tor, som du kan bruge til at få adgang til hele arrayet.
  • num_rows: Denne del af syntaksen angiver, hvor mange rækker 2D-arrayet skal have.
  • num_cols: Her angiver du antallet af kolonner for hver række i 2D-arrayet.

I eksemplet nedenfor definerer vi en 2D-matrix kaldet matrix. Den består af 3 rækker og 4 kolonner og har i alt 12 elementer.

int matrix[3][4] = {{1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}};
c++

Sådan udskrives en 2D-matrix i C++

Du kan udskrive en 2D-matrix ved hjælp af en for-loop. Den ydre loop gentager rækkerne, mens den indre loop gentager ko­lon­ner­ne i hver række. Sætningen std::cout << matrix[i][j] << " "; viser hvert element. Efter hver række opretter vi en ny række ved hjælp af std::cout << std::endl;. Dette sikrer et bedre format for ud­skrif­ten.

#include <iostream>
int main() {
    int matrix[3][4] = {{1, 2, 3, 4},
                        {5, 6, 7, 8},
                        {9, 10, 11, 12}};
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            std::cout << matrix[i][j] << " ";
        }
 
        std::cout << std::endl;
    }
    return 0;
}
c++

Ele­men­ter­ne i 2D-arrayet vises linje for linje i outputtet:

1 2 3 4
5 6 7 8
9 10 11 12
c++

Eksempler på brug af to­di­men­sio­nel­le arrays i C++

Pro­gram­me­ring med C++ betyder, at du før eller senere kommer til at arbejde med arrays. I det følgende afsnit viser vi dig typiske an­ven­del­ser for 2D-arrays i C++.

2D-matricer med bru­ger­in­put

Her er et enkelt C++-eksempel, hvor vi lader brugeren definere en 2D-matrix dynamisk. Først beder vi brugeren om at indtaste antallet af rækker og kolonner, ef­ter­fulgt af ele­men­ter­ne til matrixen.

#include <iostream>
int main() {
    int numRows, numCols;
    std::cout << "Number of rows: ";
    std::cin >> numRows;
    std::cout << "Number of columns: ";
    std::cin >> numCols;
    int userArray[numRows][numCols];
    std::cout << "Please enter in elements:\n";
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            std::cout << "Element [" << i << "][" << j << "]: ";
            std::cin >> userArray[i][j];
        }
    }
    std::cout << "2D array:\n";
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            std::cout << userArray[i][j] << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}
c++

Hvis 2 rækker og 3 kolonner og værdierne 1, 2, 3, 4, 5, 6 indtastes som bru­ger­in­put, vil 2D-arrayet være:

2D array:
1 2 3
4 5 6
c++

Til­fø­jel­se af matricer med 2D-matricer

Med C-ope­ra­to­rer som + kan vi nemt tilføje matricer i C++ ved hjælp af 2D-arrays.

#include <iostream>
const int numRows = 2; 
const int numCols = 2; 
void matrixAddition(int A[][numCols], int B[][numCols], int result[][numCols]) {
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            result[i][j] = A[i][j] + B[i][j];
        }
    }
}
void displayMatrix(int matrix[][numCols]) {
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j < numCols; ++j) {
            std::cout << matrix[i][j] << " ";
        }
        std::cout << std::endl;
    }
}
int main() {
    int matrixA[numRows][numCols] = {{1, 2}, {3, 4}};
    int matrixB[numRows][numCols] = {{5, 6}, {7, 8}};
    int resultMatrix[numRows][numCols];
    matrixAddition(matrixA, matrixB, resultMatrix);
    // Output of matrix A and B and their sum
    std::cout << "Matrix A:\n";
    displayMatrix(matrixA);
    std::cout << "\nMatrix B:\n";
    displayMatrix(matrixB);
    std::cout << "\nSum (A + B):\n";
    displayMatrix(resultMatrix);
    return 0;
}
c++

Først opretter vi to 2x2 matricer, A og B. Derefter beregner vi deres sum, som vises i den re­sul­te­ren­de matrix. Funk­tio­nen matrixAddition ac­cep­te­rer de to ind­le­den­de matricer og den re­sul­te­ren­de matrix som parametre og udfører ad­di­tio­nen. Funk­tio­nen displayMatrix viser derefter summen af ma­tri­cer­ne A og B på konsollen.

Her er re­sul­ta­tet:

Matrix A:
1 2
3 4
Matrix B:
5 6
7 8
Sum (A + B):
6 8
10 12
c++
Gå til ho­ved­me­nu­en