Matrizes em C++ | Declare | Inicializar | Ponteiro para exemplos de matriz
O que é uma matriz?
Um array é uma estrutura de dados que armazena um elemento do mesmo tipo de dados sequencialmente. Uma matriz C++ tem um tamanho fixo.
Você pode ver uma matriz como uma coleção de variáveis de um tipo de dados semelhante. Em vez de declarar cada variável e atribuir um valor a ela individualmente, você pode declarar uma variável (o array) e adicionar os valores das várias variáveis a ela. Cada valor agregado ao array é identificado por um índice.
Neste tutorial de C++, você aprenderá:
- O que é uma matriz?
- Por que precisamos de matrizes?
- Declare um array em C++
- Inicialização da matriz
- Tipos de matrizes
- Matriz unidimensional
- Matriz multidimensional
- Matriz bidimensional
- Matriz de três dimensões
- Ponteiro para uma matriz
- Acessando os valores de um Array
- Vantagens de um Array em C++
- Desvantagens de um Array em C++
Por que precisamos de matrizes?
Arrays são muito importantes em qualquer linguagem de programação. Eles fornecem uma maneira mais conveniente de armazenar variáveis ou uma coleção de dados de um tipo de dados semelhante juntos, em vez de armazená-los separadamente. Cada valor do array será acessado separadamente.
Declare um array em C++
A declaração de array em C++ envolve declarar o tipo, bem como o número de elementos a serem armazenados pelo array. Sintaxe:
type array-Name [ array-Size ];
Regras para declarar um array unidimensional em C++.
- Tipo: O tipo é o tipo de elementos a serem armazenados na matriz e deve ser um tipo de dados C++ válido.
- Nome da matriz: O array-Name é o nome a ser atribuído ao array.
- Tamanho da matriz: O array-Size é o número de elementos a serem armazenados no array. Deve ser um número inteiro e maior que 0.
Por exemplo, você pode criar uma matriz chamada age e armazenar as idades de 5 alunos da seguinte forma:
int age[5];
O array age armazenará 5 inteiros representando as idades de diferentes alunos.
Inicialização da matriz
A inicialização do array é o processo de atribuir/armazenar elementos em um array. A inicialização pode ser feita em uma única instrução ou uma a uma. Observe que o primeiro elemento em um array é armazenado no índice 0, enquanto o último elemento é armazenado no índice n-1, onde n é o número total de elementos no array.
No caso do array age, o primeiro elemento será armazenado no índice 0, enquanto o último elemento será armazenado no índice 4.
Vamos usar o array age para demonstrar como a inicialização do array pode ser feita:
int age[5] = {19, 18, 21, 20, 17};
O número total de elementos dentro do {} não pode exceder o valor indicado no [ ]. O elemento 19 está no índice 0, 18 no índice 1, 21 no índice 2, 20 no índice 3 e 17 no índice 4. Se você não indicar o número de elementos a serem armazenados no array dentro de [ ], o array só será grande o suficiente para conter os elementos adicionados em {}. Por exemplo:
int age[] = {19, 18, 21, 20, 17};
A instrução acima criará exatamente a mesma matriz que a anterior. Você também pode atribuir um elemento a uma matriz usando seu índice. Por exemplo:
age[3] = 20;
A instrução acima armazenará o valor 20 no índice 3 do array chamado age. Isso significa que 20 será o 4 th elemento da matriz.
Tipos de matrizes
Existem dois tipos de matrizes C++:
- Matriz unidimensional
- Matriz multidimensional
- Ponteiro para uma matriz
Matriz Unidimensional
Esta é uma matriz na qual os itens de dados são organizados linearmente em apenas uma dimensão. É comumente chamado de matriz 1-D. Sintaxe:
datatype array-name[size];
- O array-name é o nome do array.
- O tamanho é o número de itens a serem armazenados na matriz.
Por exemplo:
#include <iostream> using namespace std; int main() { int age[5] = { 19, 18, 21, 20, 17 }; for (int x = 0; x < 5; x++) { cout <<age[x]<<"\n"; } }
Saída:
Aqui está uma captura de tela do código:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
- Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
- Chamando a função main() dentro da qual a lógica do programa deve ser adicionada.
- Início do corpo da função main().
- Declarando um array chamado age para armazenar 5 inteiros. Os 5 inteiros também foram inicializados.
- Crie uma variável inteira x usando um loop for.
- O início do corpo do loop for.
- Usando a variável de loop x para iterar sobre os valores do array age e imprimi-los no console. O “\n” é um caractere de nova linha e imprime em uma nova linha após cada iteração.
- Fim do corpo do for a loop.
- Fim do corpo da função main().
Matriz multidimensional
Esta é uma matriz na qual os itens de dados são organizados para formar uma matriz de matrizes. Um array multidimensional pode ter qualquer número de dimensões, mas arrays bidimensionais e tridimensionais são comuns. Sintaxe:
datatype array-name[d1][d2][d3]...[dn];
O array-name é o nome do array que terá n dimensões. Por exemplo:
Matriz bidimensional
Um array 2D armazena dados em uma lista com array 1-D. É uma matriz com linhas e colunas. Para declarar uma matriz 2D, use a seguinte sintaxe:
type array-Name [ x ][ y ];
O tipo deve ser um tipo de dados C++ válido. Veja uma matriz 2D como uma tabela, onde x denota o número de linhas enquanto y denota o número de colunas. Isso significa que você identifica cada elemento em uma matriz 2D usando a forma a[x][y], onde x é o número de linhas ey o número de colunas nas quais o elemento pertence.
Aqui está um exemplo de como inicializar um array 2D:
int a[2][3] = { {0, 2, 1} , /* row at index 0 */ {4, 3, 7} , /* row at index 1 */ };
No exemplo acima, temos uma matriz 2D que pode ser vista como uma matriz 2×3. São 2 linhas e 3 colunas. O elemento 0 pode ser acessado como a[0][1] porque está localizado na interseção da linha indexada 0 e coluna indexada 1. O elemento 3 pode ser acessado como a[1][2] porque está localizado no interseção da linha indexada 1 e da coluna indexada 2.
Observe que simplesmente adicionamos chaves para diferenciar as diferentes linhas de elementos. A inicialização também poderia ter sido feita da seguinte forma:
int a[2][3] = {0, 2, 1, 4, 3, 7}; };
O exemplo C++ a seguir demonstra como inicializar e percorrer uma matriz 2D:
#include <iostream> using namespace std; int main() { // a 2x3 array int a[3][2] = { {0, 2}, {1, 4}, {3, 7} }; // traverse array elements for (int i=0; i<3; i++) for (int j=0; j<2; j++) { cout << "a[" <<i<< "][" <<j<< "]: "; cout << a[i][j] << endl; } return 0; }
Saída:
Aqui está uma captura de tela do código acima:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
- Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
- Chamar a função main() na qual o código deve ser adicionado.
- Início do corpo da função main().
- Um comentário. O compilador C++ ignorará isso.
- Declarando uma matriz 2D de 3 linhas e 2 colunas. Itens também foram adicionados ao array.
- Um comentário. O compilador C++ ignorará isso.
- Criando uma variável i usando um loop for. Esta variável irá iterar sobre os índices de linha da matriz.
- Criando uma variável j usando um laço for. Esta variável irá iterar sobre os índices de coluna da matriz.
- Início do corpo dos loops.
- Imprima os valores das variáveis i e j no console entre colchetes no console.
- Imprima o valor armazenado no índice [i][j] do array a.
- Fim do corpo dos loops.
- A função main() deve retornar um valor inteiro se o programa funcionar bem.
- Fim do corpo da função main().
Três – Matriz Dimensional
Uma matriz 3D é uma matriz de matrizes. Cada elemento em uma matriz 3D é identificado por um conjunto de 3 índices. Para acessar os elementos de um array 3D, usamos três loops for. Por exemplo:
#include<iostream> using namespace std; void main() { int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}}; cout << "a[0][1][0] = " << a[0][1][0] << "\n"; cout << "a[0][1][1] = " << a[0][1][1] << "\n"; }
Saída:
Aqui está uma captura de tela do código:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
- Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
- Chamando a função main() dentro da qual a lógica do programa deve ser adicionada.
- Início do corpo da função main().
- Declarar um array 3D chamado an de tamanho 2x3x2. Os valores da matriz também foram inicializados.
- Acessando o item armazenado no índice [0][1][0] do array e imprimindo-o no console.
- Acessando o item armazenado no índice [0][1][1] do array e imprimindo-o no console.
- Fim do corpo da função main().
Ponteiro para uma matriz
Um ponteiro é uma variável que contém um endereço. Além de usar um ponteiro para armazenar o endereço de uma variável, podemos usá-lo para armazenar o endereço de uma célula do array. O nome de um array aponta constantemente para seu primeiro elemento. Considere a declaração abaixo:
int age[5];
A idade é um ponteiro para $age[0], o endereço do primeiro elemento de um array chamado age. Considere o seguinte exemplo:
#include <iostream> using namespace std; int main() { int *john; int age[5] = { 19, 18, 21, 20, 17 }; john = age; cout << john << "\n"; cout << *john; }
Saída:
Observe que o primeiro valor da saída acima pode retornar um valor diferente dependendo do endereço atribuído ao primeiro elemento da matriz na memória do seu computador.
Aqui está uma captura de tela do código:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
- Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
- Chamando a função main() dentro da qual a lógica do programa deve ser adicionada.
- Início do corpo da função main().
- Declarando uma variável de ponteiro chamada *john.
- Declarar um array de inteiros chamado age para armazenar 5 inteiros. Os valores dos inteiros também foram inicializados.
- Atribuindo à variável john o valor do endereço do item armazenado no primeiro índice do array age.
- Imprimindo o valor da variável john, que é o endereço do item armazenado no primeiro índice do array age.
- Imprimindo o primeiro valor armazenado no array age.
- Fim do corpo da função main().
Os nomes de matrizes podem ser usados como ponteiros constantes e vice-versa também é verdadeiro. Isso significa que você pode acessar o valor armazenado no índice 3 do array age com *(age + 3). Por exemplo:
#include <iostream> using namespace std; int main() { // an array of 5 elements. int age[5] = { 19, 18, 21, 20, 17 }; int *p; p = age; // output array values cout << "Using pointer: " << endl; for (int x=0; x<5; x++) { cout << "*(p + " << x << ") : "; cout << *(p + x) << endl; } cout << "Using age as address: " << endl; for (int x = 0; x < 5; x++) { cout << "*(age + " << x << ") : "; cout << *(age + x) << endl; } return 0; }
Saída:
Aqui está uma captura de tela do código:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
- Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
- Chamada da função main() e início do corpo da função main().
- Um comentário. O compilador C++ ignorará isso.
- Declarando um array chamado age para armazenar 5 inteiros.
- Criando um ponteiro inteiro p.
- Atribuindo p o valor do endereço do primeiro elemento do array age.
- Um comentário. O compilador C++ ignorará isso.
- Imprima algum texto no console.
- Crie um inteiro x usando a para um loop. O { marca o início do corpo do for um loop.
- Imprima os valores de x combinados com algum outro texto no console.
- Imprima os valores de *(p + x) no console.
- Fim do corpo do for um loop.
- Imprima algum texto no console.
- Crie uma variável x usando um loop for. O { marca o início do corpo do loop for.
- Imprima os valores de x de 0 a 4 junto com algum outro texto.
- Imprima os valores de *(idade + x).
- Fim do corpo do loop for.
- Retorne o valor se o programa for executado com sucesso.
- Fim do corpo da função main().
Acessando os valores de um Array
Os elementos de um array são acessados usando seus respectivos índices. O índice do elemento a ser acessado é adicionado entre colchetes [ ] imediatamente após o nome do array. Por exemplo:
int john = age[2];
No exemplo acima, estamos simplesmente afirmando que a idade de john é armazenada no índice 2 do array chamado age. Isso significa que a idade de João é o 3 rd valor na idade da matriz. Aqui está um exemplo C++ completo que mostra como acessar e imprimir este valor:
#include<iostream> using namespace std; int main() { int age[5] = { 19, 18, 21, 20, 17 }; int john = age[2]; cout << "The age of John is:"<<john; }
Resultado:
Aqui está uma captura de tela do código:
Explicação do código:
- Incluindo o arquivo de cabeçalho iostream em nosso código. Isso nos permitirá ler e gravar no console.
- Incluindo o namespace std para usar suas classes e funções sem chamá-lo.
- Chamar a função main() na qual o código deve ser adicionado.
- Início de um corpo da função main().
- Declarando um array chamado age para armazenar 5 elementos inteiros.
- Acessando o valor armazenado no índice 2 do array age e armazenando seu valor em uma variável chamada john.
- Imprimir o valor da variável john no console junto com outro texto.
Vantagens de um Array em C++
Aqui estão os prós/benefícios de usar Array em C++:
- Os elementos da matriz podem ser percorridos facilmente.
- Fácil de manipular dados de matriz.
- Os elementos do array podem ser acessados aleatoriamente.
- Arrays facilitam a otimização do código; portanto, podemos realizar muito trabalho usando menos código.
- Fácil de classificar dados de matriz.
Desvantagens de um Array em C++
- Um array tem um tamanho fixo; portanto, não podemos adicionar novos elementos a ele após a inicialização.
- Alocar mais memória do que o necessário leva ao desperdício de espaço de memória, e menos alocação de memória pode criar um problema.
- O número de elementos a serem armazenados em uma matriz deve ser conhecido antecipadamente.
Resumo
- Um array é uma estrutura de dados que armazena elementos do mesmo tipo de dados.
- Os elementos do array são armazenados sequencialmente.
- Os elementos do array são indicados usando seus respectivos índices. O primeiro elemento está no índice 0, enquanto o último elemento está no índice n-1, onde é o número total de elementos do array.
- A declaração de um array envolve a definição dos tipos de dados dos elementos do array, bem como o número de elementos a serem armazenados no array.
- Um array unidimensional armazena elementos sequencialmente.
- Um array bidimensional armazena elementos em linhas e colunas.
- Um array tridimensional é um array de arrays.
- Os elementos podem ser adicionados a um array usando seus índices.
- Os elementos do array são acessados usando seus índices.
- Um array multidimensional tem mais de uma dimensão.
- O nome do array aponta para seu primeiro elemento.
- Os arrays têm um tamanho fixo, o que significa que novos elementos não podem ser adicionados ao array após sua inicialização.
Linguagem C
- Matrizes C#
- Passando array para uma função na programação C++
- Copiar Matrizes Java
- C++ do… while loop com exemplos
- Alocação dinâmica de matrizes em C++ com exemplo
- Ponteiros C++ com exemplos
- Tipo de dados C++ Char com exemplos
- Sobrecarga do operador C++ com exemplos
- Funções C++ com exemplos de programas
- Tutorial de coleções de C# com exemplos