C++-kielessä voit käyttää kak­siu­lot­tei­sia tau­lu­koi­ta jär­jes­tä­mään tiedot tau­luk­ko­muo­toi­ses­ti. Ma­te­ma­tii­kas­sa, eri­tyi­ses­ti li­ne­aa­rial­gebraas­sa, 2D-taulukot tarjoavat op­ti­maa­li­sen rakenteen mat­rii­sien esit­tä­mi­seen.

Mikä on 2D-taulukko C++-kielessä?

C++-kielessä 2D-taulukko on tie­to­ra­ken­ne, joka järjestää elementit kak­siu­lot­tei­seen, tau­luk­ko­muo­toi­seen muotoon. Toisin kuin yk­siu­lot­tei­set taulukot, jotka tal­len­ta­vat elementit yk­sin­ker­tai­ses­ti jär­jes­tyk­ses­sä, 2D-taulukko järjestää tiedot riveiksi ja sa­rak­keik­si. Jokainen 2D-taulukon elementti tun­nis­te­taan sen rivi- ja sa­rak­kein­dek­sien avulla, mikä helpottaa yk­sit­täis­ten da­ta­pis­tei­den käyttöä ja kä­sit­te­lyä. Tämän tyyp­pi­sel­lä tau­lu­kol­la on useita käyt­tö­tar­koi­tuk­sia mat­rii­se­ja si­säl­tä­vis­tä ma­te­maat­ti­sis­ta ope­raa­tiois­ta ras­te­ri­tie­to­jen kä­sit­te­lyyn.

Miten 2D-taulukko on ra­ken­net­tu C++-kielessä?

C++-kielessä 2D-tau­lu­koi­den mää­rit­te­lyn syntaksi koostuu seu­raa­vis­ta ele­men­teis­tä:

data_type arrayName[num_rows][num_cols];
c++
  • data_type: Tie­to­tyyp­pi määrittää 2D-tau­luk­koon tal­len­net­ta­van datan tyypin. Se voi olla esi­mer­kik­si int ko­ko­nais­lu­vuil­le, double liu­ku­lu­vuil­le tai käyttäjän mää­rit­tä­mil­le tie­to­tyy­peil­le.
  • arrayName: Nimi toimii tun­nis­tee­na, jota voit käyttää koko taulukon käyt­tä­mi­seen.
  • num_rows: Tämä syntaksin osa määrittää, kuinka monta riviä 2D-tau­lu­kos­sa on.
  • num_cols: Tässä määrität 2D-taulukon kunkin rivin sa­rak­kei­den lu­ku­mää­rän.

Alla olevassa esi­mer­kis­sä mää­ri­tel­lään 2D-taulukko nimeltä matrix. Se koostuu 3 rivistä ja 4 sa­rak­kees­ta ja sisältää yhteensä 12 ele­ment­tiä.

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

Kuinka tulostaa 2D-taulukko C++-kielellä

Voit tulostaa 2D-taulukon for-silmukan avulla. Ulompi silmukka iteroi rivit, kun taas sisempi silmukka iteroi kunkin rivin sarakkeet. Lauseke std::cout << matrix[i][j] << " "; näyttää kunkin elementin. Jokaisen rivin jälkeen luomme uuden rivin käyt­tä­mäl­lä std::cout << std::endl;. Tämä varmistaa paremman muodon tu­los­teel­le.

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

2D-taulukon elementit näytetään tu­los­tees­sa rivi riviltä:

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

Esi­merk­ke­jä kak­siu­lot­teis­ten tau­lu­koi­den käytöstä C++-kielessä

C++-kielellä oh­jel­moin­ti tar­koit­taa, että joudut ennemmin tai myöhemmin työs­ken­te­le­mään tau­lu­koi­den kanssa. Seu­raa­vas­sa osassa esit­te­lem­me tyy­pil­li­siä so­vel­luk­sia 2D-tau­lu­koil­le C++-kielellä.

2D-taulukot käyttäjän syöt­teil­lä

Tässä on yk­sin­ker­tai­nen C++-esimerkki, jossa käyttäjä voi mää­ri­tel­lä 2D-taulukon dy­naa­mi­ses­ti. Ensin pyydämme käyttäjää syöt­tä­mään rivien ja sa­rak­kei­den lu­ku­mää­rän, minkä jälkeen syötetään taulukon elementit.

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

Jos käyttäjän syöttöinä annetaan 2 riviä ja 3 saraketta sekä arvot 1, 2, 3, 4, 5, 6, 2D-taulukko on seuraava:

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

Mat­rii­sien li­sää­mi­nen 2D-tau­lu­koil­la

C-ope­raat­to­reil­la, kuten +, voimme helposti lisätä mat­rii­se­ja C++:ssa käyt­tä­mäl­lä 2D-tau­lu­koi­ta.

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

Ensin luomme kaksi 2x2 matriisia, A ja B. Sitten laskemme niiden summan, joka näytetään tuloksena olevassa mat­rii­sis­sa. matrixAddition funktio hyväksyy kaksi al­ku­pe­räis­tä matriisia ja tuloksena olevan matriisin pa­ra­met­rei­na ja suorittaa yh­teen­las­kun. displayMatrix funktio näyttää sitten mat­rii­sien A ja B summan kon­so­lis­sa.

Tässä on tulos:

Matrix A:
1 2
3 4
Matrix B:
5 6
7 8
Sum (A + B):
6 8
10 12
c++
Siirry pää­va­lik­koon