Então, vamos começar com as diferenças entre as matrizes de uma dimensão e de duas dimensões, juntamente com um gráfico de comparação.
Gráfico de comparação:
Base para Comparação | Unidimensional | Bidimensional |
---|---|---|
Basic | Armazene uma lista única de elementos de tipo de dados semelhante. | Armazenar 'lista de listas' ou 'matriz de matrizes' ou 'matriz de matrizes unidimensionais'. |
Declaração | / * declaração em C ++ tipo variable_name [size]; * / / * declaração em Java tipo variable_name []; nome_variável = novo tipo [tamanho]; * / | / * declaração em C ++ tipo nome_da_variável [tamanho1] [tamanho2]; * / / * declaração em Java tipo variable_name = new int [tamanho1] [tamanho2]; * / |
Declaração Alternativa | / * Em Java int [] a = novo int [10]; * / | / * Em Java int [] [] a = novo int [10] [20]; * / |
Tamanho total em bytes | Total Bytes = sizeof (tipo de dados da variável array) * tamanho da matriz. | Total Bytes = sizeof (tipo de dados da variável array) * tamanho do primeiro índice * tamanho do segundo índice. |
Parâmetro de recebimento | Ele pode ser recebido em uma matriz de tamanho de ponteiro, ou em uma matriz não dimensionada. | O parâmetro que o recebe deve definir a dimensão mais à direita de um array. |
Dimensões | Unidimensional. | Duas dimensões. |
Definição de matriz unidimensional (matriz 1-D)
Uma matriz unidimensional ou unidimensional é considerada a “lista de variáveis de tipos de dados semelhantes”, e cada variável pode ser acessada distintamente especificando seu índice entre colchetes precedido pelo nome dessa matriz.
Vamos discutir em contexto C ++
// declaração em tipo C ++ nome_variável [tamanho];
Aqui o tipo declara o tipo de dados da variável array, e o tamanho define o número de elemento que o array manterá.
Por exemplo, se quisermos declarar uma matriz que conterá o saldo de cada mês do ano.
// example int month_balance [12];
O _balance do mês é a variável do array que conterá os 12 inteiros, que representarão o saldo de cada mês. Agora, se quisermos acessar o saldo do mês 'Abril', simplesmente tivemos que mencionar o nome da variável seguido pelo colchete contendo o valor do índice para o mês de abril, ou seja, 'saldo_do_mês [3]'. Mas como 'abril' é o quarto mês do ano, mas nós mencionamos '[3]' porque todos os arrays têm 0 como o índice do primeiro elemento.
Em Java, isso pode ser feito
// declaração no tipo Java nome_variável []; nome_variável = novo tipo [tamanho];
Aqui, inicialmente, tínhamos declarado uma variável array com seu tipo e, em seguida, alocamos memória a ela usando 'new' e atribuímos 'new' à variável array declarada. Vamos dar o exemplo acima se quisermos declarar um array que conterá o saldo em cada mês do ano.
// example int month_balance []; month_balance = new int [12];
Aqui, 'new' aloca a memória para a variável array “month_balance”, então, agora, mont_balance agora armazenará a memória para 12 valores inteiros.
Arrays podem ser inicializados quando são declarados. Um inicializador de matriz é a lista de valores separados por vírgula entre as chaves.
//exemplo
int mn_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definição de Matriz Bidimensional (Matriz 2-D)
Tanto o C ++ quanto o Java suportam o array multidimensional. Uma das formas mais simples de um array multidimensional é um array bidimensional ou um array bidimensional. Um array bidimensional pode ser considerado como 'array de arrays' ou 'array de arrays unidimensionais'. Para declarar a variável matriz bidimensional, temos que especificar o nome da matriz seguido por dois colchetes, onde o segundo índice é o segundo conjunto de colchetes.
Uma matriz bidimensional é armazenada na forma da matriz da coluna da linha, onde o primeiro índice indica a linha e o segundo índice indica a coluna. O segundo ou o índice mais à direita de um array muda muito rapidamente quando comparado ao primeiro índice ou ao índice mais à esquerda enquanto acessa os elementos de um array.
// declaração em tipo C ++ nome_da_variável [tamanho1] [tamanho2];
Por exemplo, queremos armazenar o saldo de cada 30 dias em cada mês do ano, em uma matriz 2-D.
// example int month_balance [12] [30];
Em Java, o array bidimensional é obtido por
// declaração no tipo Java variable_name = new int [size1] [size2]; // example int month_balance = new int [12] [30];
Como não podemos passar a matriz inteira como um parâmetro para uma função, um ponteiro para o primeiro elemento da matriz é passado. Um argumento que recebe a matriz bidimensional deve definir a dimensão mais à direita. A dimensão mais à direita é necessária porque o compilador precisa dela, para confirmar o comprimento de cada linha se quiser indexar a matriz corretamente. Se o índice mais à direita não for mencionado, o compilador não poderá determinar onde a próxima linha será iniciada.
// exemplo em Java void receiveing_funct (int a [] [10]) {. . . }
Quando a memória está sendo alocada dinamicamente para o array bidimensional em Java, o índice mais à esquerda é especificado e as dimensões restantes podem ser alocadas separadamente, ou seja, todas as linhas do array podem não ser do mesmo tamanho.
// exemplo em Java int month_balance = new int [12] []; month_balance [0] = novo int [31]; month_balance [1] = novo int [28]; saldo_do_mês [2] = novo int [31]; month_balance [3] = novo int [30]; month_balance [4] = novo int [31]; month_balance [5] = novo int [30]; month_balance [6] = novo int [31]; month_balance [7] = novo int [30]; month_balance [8] = novo int [31]; month_balance [9] = novo int [30]; saldo_do_mês [10] = novo int [31]; saldo_do_mês [11] = new int [30]; month_balance [12] = novo int [31];
Mas não há vantagem em fazê-lo.
Principais diferenças entre matriz unidimensional e bidimensional
- A matriz unidimensional é uma lista cujos elementos são de tipo de dados semelhante. Por outro lado, a matriz bidimensional é uma lista cujos elementos são a matriz de tipo de dados semelhante.
- Em C ++, quando a matriz unidimensional é recebida pelo parâmetro de uma função receptora, não é necessário mencionar o tamanho da matriz, pois o compilador entende que a matriz do tipo (tipo de dados mencionado junto com o parâmetro) com algum comprimento é para ser recebido. Em uma matriz bidimensional, o segundo índice, ou o índice mais à direita, deve ser especificado, já que o compilador precisa saber onde um único fim de linha e uma nova linha são iniciados.
- Em C ++, a matriz unidimensional é armazenada em uma localização de memória contígua na ordem indexada, enquanto a matriz bidimensional também é armazenada na localização de memória contígua, mas como há várias linhas em uma matriz bidimensional, o armazenamento de uma primeira linha é seguida por uma segunda e a terceira e assim por diante.
Nota:
A passagem de ambos, matriz unidimensional e matriz bidimensional para uma função é semelhante, isto é, ambas são passadas apenas pelo nome da matriz.
// exemplo passing_funt (name_of_array);
Conclusão:
No array unidimensional e bidimensional, o índice desempenha um papel muito importante, pois é a única coisa que identifica especificamente um elemento no array. O array unidimensional e bidimensional pode ser inicializado no momento de sua declaração.