C ++ Tamanho da matriz de alterações

C ++ Tamanho da matriz de alterações
Depois que uma matriz foi alocada, não há mecanismo interno para redimensioná-lo na linguagem de programação C ++. Portanto, podemos evitar esse problema gerando dinamicamente uma nova matriz, copiando o conteúdo e depois excluindo a antiga matriz. Este artigo se concentra em como alocar a memória dinamicamente em uma matriz e ajustar o tamanho da matriz com base na entrada do usuário. É uma estratégia altamente importante na programação, pois garante a utilização de memória eficiente. Quando tentamos inserir um novo item em uma matriz dinâmica, ele aumenta automaticamente até que não haja mais armazenamento para o novo item. Normalmente, a região dobra de tamanho.

O que é uma matriz dinâmica?

Uma matriz dinâmica é idêntica a uma matriz padrão de aparência, mas seu tamanho pode ser alterado enquanto o código está em execução. Os componentes de matriz dinâmica ocupam um bloco de memória contíguo. Depois que uma matriz foi definida, não é possível modificar seu tamanho. Por outro lado, uma matriz dinâmica não é como uma matriz estática. Mesmo depois de ter sido ocupado, uma matriz dinâmica pode estender seu tamanho. Os elementos podem ser adicionados constantemente na posição final da matriz dinâmica, utilizando o espaço reservado até que esteja totalmente ocupado.

Fatores -chave da matriz dinâmica em C ++:

O desempenho da matriz é determinado por seu tamanho e fator de crescimento inicial. Tome nota dos seguintes pontos:

  • Se uma matriz for modesta e tiver um fator de crescimento mais lento, continuará a realocar a memória com mais frequência. Como resultado, o desempenho da matriz sofrerá.
  • Se uma matriz for maior e tiver um alto fator de crescimento, terá uma grande quantidade de memória não utilizada. Como resultado, os processos de redimensionamento podem levar mais tempo. O desempenho da matriz também sofrerá como resultado

Exemplo 1:

A nova palavra -chave é usada para construir uma matriz dinâmica no seguinte programa C ++. Depois disso, a palavra -chave retorna uma referência ao primeiro item. A seção de cabeçalho possui o arquivo de biblioteca iostream incluído para usar seus métodos. O arquivo namespace também está incluído, o que permite utilizar sua classe sem ser chamado. Em seguida, a função principal é invocada na qual declaramos duas variáveis ​​"P" e "Num" do tipo de dados inteiro.

Na próxima etapa, a declaração cout imprime a declaração “Digite os números”. O comando CIN pega a entrada do usuário e o aloca para a variável "num". A próxima etapa tem a variável de ponteiro "Array", que contém os valores inteiros da variável "num". O número inserido do usuário será impresso usando o comando cout. Então nós temos para condição de loop que itera sobre cada elemento inserido pelo usuário. A matriz como "Array" é declarada no comando CIN, que lê a entrada inserida pelo usuário.

Após o término do loop, a declaração "seus números é" imprimirá na tela do console. Novamente, temos um para condição de loop Mas desta vez isso para condição de loop itera sobre uma variedade de elementos. Observe que permitimos que um usuário definisse o tamanho da matriz. Como resultado, o tamanho da matriz é definido em tempo de execução.

#incluir
usando namespace std;
int main ()
int p, num;
cout<< "Enter the numbers:" num;
int *array = new int (num);
cout<< "Enter " << num << " numbers" <for (p = 0; p> matriz [p];

cout<< "Your numbers are: ";
para (p = 0; p < num; p++)
cout<< Array[p] << " ";

cout<< "\n ";
retornar 0;

O usuário é solicitado a inserir o número no prompt do console. Após a entrada, o número para o tamanho da matriz exibe o número de tamanho especificado da matriz. A matriz resultante é mostrada no prompt do console do Ubuntu.

Exemplo 2:

Uma lista de inicializadores pode ser usada para definir uma matriz dinâmica. Vamos ilustrar isso com um exemplo para ver como isso funciona. Primeiro, adicionamos o arquivo iostream e o arquivo de namespace std na seção de cabeçalho. Depois disso, invocamos a função principal. A lógica do programa deve ser incluída no corpo da função. Em seguida, definimos uma variável como "a" do tipo de dados inteiro.

Depois de declarar a variável inteira, temos uma declaração dinâmica de matriz como "arr" que usa uma lista de inicializadores. Temos quatro entradas inteiras na matriz. O comando cout imprimirá a declaração "Elements of Array" antes de exibir os elementos da matriz.

Na próxima etapa, temos A para loop que itera sobre os elementos presentes em uma matriz especificada. Através do comando cout, os elementos da matriz fornecida serão impressos no prompt do console.

#incluir
usando namespace std;
int main (void)
int a;
int *arr new int [4] 9, 23, 1, 17;
cout<< "Elements of Array: " <para (a = 0; a < 4; a++)
cout<
retornar 0;

A seguir, é apresentado o resultado que obtemos da execução do programa acima:

Exemplo 3:

Uma vez alcançado o objetivo da matriz dinâmica, ela deve ser removida da memória do computador. A expressão de exclusão pode ser usada para fazer isso assim que o espaço de memória é gratuito e usado para armazenar dados adicionais. Temos que usar excluir [] para remover a matriz dinâmica da memória do sistema. O suporte quadrado [] com a palavra -chave exclua comandos a CPU para remover muitas variáveis ​​em vez de apenas um.

Vamos começar a implementação do programa. Nós importamos o arquivo necessário na seção de cabeçalho. Então, a função principal é chamada. As variáveis ​​inteiras “eu” e “não” são declaradas na função principal. Depois de definir essas variáveis, temos a declaração Cout "Número de entrada", que é para o usuário inserir o número. Recebemos um número do usuário e salvamos na variável "não" usando o comando CIN.

Em seguida, declare uma variável de ponteiro "Myarr" que armazena os números inteiros na memória. O número inserido pelo usuário será impresso no segundo comando cout deste programa. O para loop A declaração é utilizada para a iteração sobre o número inserido do usuário. No final, construímos a afirmação deleta [] que apaga a matriz dada no programa e libera espaço na memória.

#incluir
usando namespace std;
int main ()
int i, não;
cout<< "Input Number:" no;
int *myarr = new int (não);
cout<< "Input " << no << " numbers" <para (i = 0; i> myarr [i];

cout<< "Input numbers are: ";
para (i = 0; i< no; i++)
cout<
cout<exclua [] Myarr;
retornar 0;

Após a execução do programa, obtivemos a seguinte saída. Quando o programa for encerrado, a matriz será excluída.

Exemplo 4:

Podemos definir uma matriz de ponteiro de tamanho "x" dinamicamente e depois alocar memória do tamanho "y" dinamicamente para cada bunda de linha vista no exemplo a seguir. No começo, definimos a matriz na seção de cabeçalho. Na próxima etapa, temos a principal função em que temos uma variável de ponteiro "arr". A variável de ponteiro contém a matriz de tamanho "x".

Agora o para declaração de loop aloca cada linha um tamanho de memória "y". Em seguida, temos um loop aninhado para atribuir valores dinamicamente a uma memória que foi alocada. A função RAND gerará um número aleatório para a matriz 2D. No próximo loop aninhado, imprimimos a matriz 2D através da declaração std :: cout. Após o término do programa, a matriz 2D especificada será apagada do espaço de memória alocado, pois usamos delete [] no final.

#incluir
#Define x 3
#Define y 4
int main ()

int ** arr = new int*[x];
para (int i = 0; i< X; i++)
arr [i] = new int [y];

para (int i = 0; i< X; i++)

for (int j = 0; j < Y; j++)
arr [i] [j] = rand () % 10;


para (int i = 0; i< X; i++)

for (int j = 0; j < Y; j++)
std :: cout<
std :: cout<< std::endl;

para (int i = 0; i< X; i++)
excluir [] arr [i];

excluir [] arr;
retornar 0;

A matriz 2D foi gerada e mostrada na tela do console abaixo.

Conclusão

Isso é sobre a matriz redimensionada em c++. Chegamos a saber que as matrizes C ++ não têm um método embutido para redimensionar. Mas através da alocação de matriz dinâmica em C ++, o tamanho da matriz pode ser modificado. Ilustramos no exemplo para alterar o tamanho da matriz dinâmica usando uma nova palavra -chave. Além disso, podemos usar uma lista de inicializador para inicializar uma matriz. Depois de redimensionar, também podemos liberar espaço na memória usando o delete []. Este artigo mostrará como redimensionar uma matriz em C++.