I C++ kan du använda två­di­men­sio­nel­la matriser för att or­ga­ni­se­ra data på ett ta­bell­lik­nan­de sätt. Inom ma­te­ma­ti­ken, särskilt inom linjär algebra, erbjuder 2D-matriser en optimal struktur för att re­pre­sen­te­ra matriser.

Vad är en 2D-matris i C++?

I C++ är en 2D-matris en da­ta­struk­tur som ordnar element i ett två­di­men­sio­nellt, ta­bell­lik­nan­de format. Till skillnad från en­di­men­sio­nel­la matriser, som helt enkelt lagrar element i en sekvens, or­ga­ni­se­rar en 2D-matris data i rader och kolumner. Varje element i en 2D-matris iden­ti­fie­ras av sina rad- och ko­lum­nin­dex, vilket un­der­lät­tar åtkomst och hantering av enskilda da­ta­punk­ter. Från ma­te­ma­tis­ka ope­ra­tio­ner med matriser till hantering av ras­ter­da­ta finns det olika an­vänd­nings­om­rå­den för denna typ av matris.

Hur är en 2D-matris struk­tu­re­rad i C++?

I C++ består syntaxen för att deklarera 2D-matriser av följande element:

data_type arrayName[num_rows][num_cols];
c++
  • data_type: Datatypen anger vilken typ av data som ska lagras i 2D-matrisen. Detta kan till exempel vara int för heltal, double för flyttal eller an­vän­dar­de­fi­ni­e­ra­de datatyper.
  • arrayName: Namnet fungerar som en iden­ti­fi­e­ra­re som du kan använda för att komma åt hela matrisen.
  • num_rows: Denna del av syntaxen anger hur många rader 2D-matrisen ska ha.
  • num_cols: Här anger du antalet kolumner för varje rad i 2D-matrisen.

I exemplet nedan ska vi definiera en 2D-matris som heter matrix. Den består av 3 rader och 4 kolumner och har totalt 12 element.

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

Hur man skriver ut en 2D-matris i C++

Du kan skriva ut en 2D-matris med hjälp av en for-slinga. Den yttre slingan itererar över raderna, medan den inre slingan itererar över ko­lum­ner­na i varje rad. Uttrycket std::cout << matrix[i][j] << " "; visar varje element. Efter varje rad skapar vi en ny rad med hjälp av std::cout << std::endl;. Detta sä­ker­stäl­ler ett bättre format för utdata.

#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++

Elementen i 2D-matrisen visas rad för rad i utdata:

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

Exempel på hur man använder två­di­men­sio­nel­la matriser i C++

Att pro­gram­me­ra med C++ innebär att du förr eller senare kommer att arbeta med arrayer. I följande avsnitt visar vi typiska tillämp­ning­ar för 2D-arrayer i C++.

2D-matriser med an­vän­da­rin­mat­ning

Här är ett enkelt C++-exempel där vi låter an­vän­da­ren definiera en 2D-matris dynamiskt. Först ber vi an­vän­da­ren att ange antalet rader och kolumner, följt av elementen för matrisen.

#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++

Om 2 rader och 3 kolumner och värdena 1, 2, 3, 4, 5, 6 skickas som an­vän­da­rin­mat­ning blir 2D-matrisen:

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

Addera matriser med 2D-matriser

Med C-ope­ra­to­rer som + kan vi enkelt lägga till matriser i C++ med hjälp av 2D-matriser.

#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 skapar vi två 2x2, A och B. Sedan beräknar vi deras summa, som visas i den re­sul­te­ran­de matrisen. Funk­tio­nen matrixAddition tar emot de två initiala ma­tri­ser­na och den re­sul­te­ran­de matrisen som pa­ra­met­rar och utför ad­di­tio­nen. Funk­tio­nen displayMatrix visar sedan summan av ma­tri­ser­na A och B på konsolen.

Här är 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å till huvudmeny