Matrizes multidimensionais C++
Matrizes multidimensionais C++
Neste tutorial, aprenderemos sobre arrays multidimensionais em C++. Mais especificamente, como declará-los, acessá-los e usá-los de forma eficiente em nosso programa.
Em C++, podemos criar um array de um array, conhecido como array multidimensional. Por exemplo:
int x[3][4];
Aqui, x é uma matriz bidimensional. Pode conter um máximo de 12 elementos.
Podemos pensar neste array como uma tabela com 3 linhas e cada linha tem 4 colunas como mostrado abaixo.
As matrizes tridimensionais também funcionam de maneira semelhante. Por exemplo:
float x[2][4][3];
Esta matriz x pode conter um máximo de 24 elementos.
Podemos descobrir o número total de elementos na matriz simplesmente multiplicando suas dimensões:
2 x 4 x 3 = 24
Inicialização de matriz multidimensional
Como um array normal, podemos inicializar um array multidimensional de mais de uma maneira.
1. Inicialização do array bidimensional
int test[2][3] = {2, 4, 5, 9, 0, 19};
O método acima não é o preferido. Uma maneira melhor de inicializar esta matriz com os mesmos elementos da matriz é fornecida abaixo:
int test[2][3] = { {2, 4, 5}, {9, 0, 19}};
Esta matriz tem 2 linhas e 3 colunas, e é por isso que temos duas linhas de elementos com 3 elementos cada.
2. Inicialização do array tridimensional
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};
Esta não é uma boa maneira de inicializar uma matriz tridimensional. Uma maneira melhor de inicializar esse 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} }
};
Observe as dimensões dessa matriz tridimensional.
A primeira dimensão tem o valor
2
. Assim, os dois elementos que compõem a primeira dimensão são: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} }
A segunda dimensão tem o valor
3
. Observe que cada um dos elementos da primeira dimensão tem três elementos cada:{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.
Finalmente, há quatro
int
números dentro de cada um dos elementos da segunda dimensão:{3, 4, 2, 3} {0, -3, 9, 11} ... .. ... ... .. ...
Exemplo 1:matriz bidimensional
// 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;
}
Saída
test[0][0] = 2 test[0][1] = -5 test[1][0] = 4 test[1][1] = 0 test[2][0] = 9 test[2][1] = 1
No exemplo acima, inicializamos um
int
bidimensional array chamado test que tem 3 "linhas" e 2 "colunas". Aqui, usamos o
for
aninhado loop para exibir os elementos da matriz. - o loop externo de
i == 0
parai == 2
acessar as linhas do array - o loop interno de
j == 0
paraj == 1
acessar as colunas do array
Finalmente, imprimimos os elementos do array em cada iteração.
Exemplo 2:como obter entrada para matriz bidimensional
#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;
}
Saída
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
Aqui, usamos um
for
aninhado loop para receber a entrada do array 2d. Depois que toda a entrada foi obtida, usamos outro for
aninhado loop para imprimir os membros da matriz. Exemplo 3:Matriz tridimensional
// 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;
}
Saída
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
O conceito básico de elementos de impressão de uma matriz 3D é semelhante ao de uma matriz 2D.
No entanto, como estamos manipulando 3 dimensões, usamos um loop for aninhado com 3 loops totais em vez de apenas 2:
- o loop externo de
i == 0
parai == 1
acessa a primeira dimensão da matriz - o loop do meio de
j == 0
paraj == 2
acessa a segunda dimensão da matriz - o loop mais interno de
k == 0
parak == 1
acessa a terceira dimensão da matriz
Como podemos ver, a complexidade do array aumenta exponencialmente com o aumento das dimensões.
Linguagem C
- Matrizes C#
- Matriz multidimensional C#
- Matriz irregular em C#
- Operadores C++
- Comentários C++
- Passando array para uma função na programação C++
- Copiar Matrizes Java
- Matrizes em C++ | Declare | Inicializar | Ponteiro para exemplos de matriz
- Alocação dinâmica de matrizes em C++ com exemplo
- MATLAB - Matrizes