Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ multidimensionale arrays

C++ multidimensionale arrays

In deze zelfstudie leren we over multidimensionale arrays in C++. Meer specifiek, hoe u ze declareert, toegang krijgt en efficiënt gebruikt in ons programma.

In C++ kunnen we een array van een array maken, ook wel een multidimensionale array genoemd. Bijvoorbeeld:

int x[3][4];

Hier, x is een tweedimensionale array. Het kan maximaal 12 elementen bevatten.

We kunnen deze array zien als een tabel met 3 rijen en elke rij heeft 4 kolommen, zoals hieronder weergegeven.

Driedimensionale arrays werken ook op een vergelijkbare manier. Bijvoorbeeld:

float x[2][4][3];

Deze matrix x kan maximaal 24 elementen bevatten.

We kunnen het totale aantal elementen in de array achterhalen door simpelweg de afmetingen te vermenigvuldigen:

2 x 4 x 3 = 24

Multidimensionale array-initialisatie

Net als een normale array kunnen we een multidimensionale array op meer dan één manier initialiseren.

1. Initialisatie van tweedimensionale array

int test[2][3] = {2, 4, 5, 9, 0, 19};

Bovenstaande methode heeft niet de voorkeur. Een betere manier om deze array te initialiseren met dezelfde array-elementen wordt hieronder gegeven:

int  test[2][3] = { {2, 4, 5}, {9, 0, 19}};

Deze array heeft 2 rijen en 3 kolommen, daarom hebben we twee rijen elementen met elk 3 elementen.


2. Initialisatie van driedimensionale array

int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 
                 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};

Dit is geen goede manier om een ​​driedimensionale array te initialiseren. Een betere manier om deze array te initialiseren is:

int test[2][3][4] = { 
                     { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} },
                     { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }
                 };

Let op de afmetingen van deze driedimensionale array.

De eerste dimensie heeft de waarde 2 . De twee elementen waaruit de eerste dimensie bestaat zijn dus:

Element 1 = { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} }
Element 2 = { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }

De tweede dimensie heeft de waarde 3 . Merk op dat elk van de elementen van de eerste dimensie elk drie elementen heeft:

{3, 4, 2, 3}, {0, -3, 9, 11} and {23, 12, 23, 2} for Element 1.
{13, 4, 56, 3}, {5, 9, 3, 5} and {5, 1, 4, 9} for Element 2.

Ten slotte zijn er vier int getallen binnen elk van de elementen van de tweede dimensie:

{3, 4, 2, 3}
{0, -3, 9, 11}
... .. ...
... .. ...

Voorbeeld 1:Tweedimensionale array

// C++ Program to display all elements
// of an initialised two dimensional array

#include <iostream>
using namespace std;

int main() {
    int test[3][2] = {{2, -5},
                      {4, 0},
                      {9, 1}};

    // use of nested for loop
    // access rows of the array
    for (int i = 0; i < 3; ++i) {

        // access columns of the array
        for (int j = 0; j < 2; ++j) {
            cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
        }
    }

    return 0;
}

Uitvoer

test[0][0] = 2
test[0][1] = -5
test[1][0] = 4
test[1][1] = 0
test[2][0] = 9
test[2][1] = 1

In het bovenstaande voorbeeld hebben we een tweedimensionale int . geïnitialiseerd array met de naam test die 3 "rijen" en 2 "kolommen" heeft.

Hier hebben we de geneste for . gebruikt loop om de array-elementen weer te geven.

  • de buitenste lus van i == 0 tot i == 2 toegang krijgen tot de rijen van de array
  • de binnenste lus van j == 0 tot j == 1 toegang tot de kolommen van de array

Ten slotte printen we de array-elementen in elke iteratie.


Voorbeeld 2:invoer voor tweedimensionale array

#include <iostream>
using namespace std;

int main() {
    int numbers[2][3];

    cout << "Enter 6 numbers: " << endl;

    // Storing user input in the array
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cin >> numbers[i][j];
        }
    }

    cout << "The numbers are: " << endl;

    //  Printing array elements
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl;
        }
    }

    return 0;
}

Uitvoer

Enter 6 numbers: 
1
2
3
4
5
6
The numbers are:
numbers[0][0]: 1
numbers[0][1]: 2
numbers[0][2]: 3
numbers[1][0]: 4
numbers[1][1]: 5
numbers[1][2]: 6

Hier hebben we een geneste for . gebruikt lus om de invoer van de 2D-array te nemen. Nadat alle invoer is gedaan, hebben we een andere geneste for . gebruikt loop om de arrayleden af ​​te drukken.


Voorbeeld 3:Driedimensionale array

// C++ Program to Store value entered by user in
// three dimensional array and display it.

#include <iostream>
using namespace std;

int main() {
    // This array can store upto 12 elements (2x3x2)
    int test[2][3][2] = {
                            {
                                {1, 2},
                                {3, 4},
                                {5, 6}
                            }, 
                            {
                                {7, 8}, 
                                {9, 10}, 
                                {11, 12}
                            }
                        };

    // Displaying the values with proper index.
    for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 3; ++j) {
            for (int k = 0; k < 2; ++k) {
                cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl;
            }
        }
    }

    return 0;
}

Uitvoer

test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12

Het basisconcept van het afdrukken van elementen van een 3D-array is vergelijkbaar met dat van een 2D-array.

Omdat we echter 3 dimensies manipuleren, gebruiken we een geneste for-lus met 3 totale lussen in plaats van slechts 2:

  • de buitenste lus van i == 0 tot i == 1 geeft toegang tot de eerste dimensie van de array
  • de middelste lus van j == 0 tot j == 2 geeft toegang tot de tweede dimensie van de array
  • de binnenste lus van k == 0 tot k == 1 geeft toegang tot de derde dimensie van de array

Zoals we kunnen zien, neemt de complexiteit van de array exponentieel toe met de toename van de afmetingen.


C Taal

  1. C#-matrices
  2. C# Multidimensionale array
  3. C# Jagged Array
  4. C++ Type-conversie
  5. C++-operators
  6. C++ Opmerkingen
  7. Array doorgeven aan een functie in C++-programmering
  8. Java-kopieerarrays
  9. Arrays in C++ | Verklaren | Initialiseren | Aanwijzer naar matrixvoorbeelden
  10. C++ Dynamische toewijzing van arrays met voorbeeld
  11. MATLAB - Arrays