Erro iso c ++ proíbe a matriz de comprimento variável

Erro iso c ++ proíbe a matriz de comprimento variável
Matrizes de tamanho variável (VLAs) não são proibidas em C ++; O erro ISO está correto. Matrizes de tamanho de tempo de execução ou de tamanho variável são os outros nomes para matrizes de comprimento variável. O tamanho dessas matrizes está definido em tempo de execução. Entre os tipos que podem ser atualizados estão as matrizes e ponteiros de comprimento variável para matrizes de comprimento variável. Os tipos variáveis ​​modificados devem ser definidos no nível de protótipo de bloco ou função. Matrizes de comprimento variável são um recurso que nos permite alocar uma matriz de automóveis de tamanho variável na pilha. Em uma declaração typedef, ele pode ser utilizado. A partir do padrão C ++, C permite matrizes de tamanho variável. O programa abaixo, por exemplo, compila e executa perfeitamente em C. Void PrintArray (int n)

Int Array [n];
//…

int main ()

PrintArray (8);

No entanto, as matrizes de tamanho variável não são suportadas pelo padrão C ++ (até C ++ 11). O tamanho da matriz é uma expressão constante no padrão C ++ 11. Como resultado, o programa acima pode não ser um programa C ++ aceitável. Como o compilador GCC tem uma extensão para acomodá -los, o programa pode funcionar com o compilador GCC. Por mais pouco mais, o tamanho da matriz agora é uma expressão simples em C ++ 14 (não-expressão constante).

Não é desejável ter que gerar uma matriz potencialmente grande em uma pilha com espaço limitado. Se você não estiver ciente antes do tempo, escreveremos o código prejudicial. Matrizes de comprimento variável não são suportadas nativamente em C ++ porque exigiriam mudanças significativas no sistema de tipos.

Aqui, no artigo do C ++, mostraremos como superar o erro de matriz de comprimento variável ISO C ++ ISO no tempo de compilação.

Exemplo 1: Programa para implementar uma matriz de comprimento variável em C ++ com o GCC Compiler

Matrizes de comprimento variável podem escolher qualquer tamanho que o usuário desejar, eu.e., Eles podem ser variáveis ​​em tamanho. A seguir, é apresentado um programa C ++ para criar matrizes de comprimento variável:

Temos arquivos de cabeçalho C ++ na primeira etapa e o arquivo de namespace. Depois disso, temos o método principal do programa, e o corpo principal tem a declaração de variável de ponteiro como "Array" e a outra variável "arr_size" Declaração. O Cout imprime a declaração que pede ao usuário um número para o tamanho da matriz. Em seguida, o NIN receberá o valor numérico do usuário. A variável "Array" é chamada onde definimos o tamanho da matriz.

Agora, também solicitamos os valores da matriz do usuário. O valor da matriz irá atingir o loop for até atingir o tamanho da matriz. Então, o segundo para o loop é usado para imprimir os valores dentro da matriz e, ao mesmo tempo, excluímos a matriz usando a expressão deleta [] no programa.

#incluir
#incluir
usando namespace std;
int main ()
Int *Array, ARR_SIZE;
cout<<"Enter array size: "Arr_size;
Array = new int [arr_size];
cout<<"Enter array values: "<for (int i = 0; i> matriz [i];
cout<<"Array: ";
para (int i = 0; icout<cout<retornar 0;

O shell exibe uma mensagem para inserir o tamanho da matriz após a compilação. Quando o usuário inserir o tamanho da matriz, o shell pede ao usuário que defina os valores para a matriz. O tamanho da matriz e seus elementos são acessíveis da seguinte forma. Portanto, podemos implementar uma matriz de comprimento variável em C ++ sem uma exceção proibida.

Exemplo 2: Programa para implementar uma matriz de comprimento variável em C ++ usando vetores

O C ++ STL fornece um vetor como uma alternativa às matrizes de comprimento variável. É adequado para uma variedade de aplicações. Ficará mais claro com o programa C ++, que implementamos abaixo.

Como temos que usar vetores em nosso programa. Portanto, a parte mais importante é definir o vetor como um arquivo de cabeçalho na parte superior da implementação do código. Adicionamos o arquivo vetorial na seção do cabeçalho.

Dentro do programa principal, temos uma classe vetorial com tipo INT, e a classe de vetores tem uma variável “V.”Adicionamos cinco elementos do tipo inteiro no vetor. Depois disso, temos um ciclo de iteração de loop. Dentro do loop for, declaramos um iterador a um vetor com uma nova variável “It.”Então, a variável“ it ”tem uma função de início e final para exibir os elementos dos vetores.

#incluir
#incluir
usando namespace std;
int main ()
vetor V;
v.push_back (10);
v.push_back (20);
v.push_back (30);
v.push_back (40);
v.push_back (50);
para (vetor :: iterator it = v.começar(); isto != v.fim(); It ++)
cout<< *it <
retornar 0;

O programa acima fornece a saída como esta.

Exemplo 3: Programa para implementar uma matriz de comprimento de variável em C ++ usando o STD :: Vector

Os vetores são usados ​​para transportar tipos de dados comparáveis ​​em C++. O tamanho de um vetor, diferentemente das matrizes, pode crescer dinamicamente. Podemos ajustar o tamanho do vetor, conforme necessário ao longo da execução do programa. O arquivo de cabeçalho do vetor deve ser incluído em nosso programa para utilizar vetores. Depois que a biblioteca vetorial estiver incluída no arquivo de cabeçalho, podemos utilizar o vetor como std :: vetor no programa.

Depois de incluir a biblioteca vetorial no topo, chamamos de std :: vetor dentro da função principal do programa. O vetor é declarado como "números" e inicializado com os cinco valores numéricos aleatórios. A variável "Número" é novamente definida, que possui três elementos vetoriais do contêiner vetorial acima do rumo. O std :: cout é usado para exibir o comprimento do vetor dentro da variável "número" usando a função de tamanho.

#incluir
#incluir
int main ()

std :: números de vetor = 10, 20, 30, 40, 50;
números = 30, 40, 50;
std :: cout<< "Array Length : " <retornar 0;

A saída mostra o comprimento da matriz vetorial especificada da seguinte forma.

Conclusão

Resumindo! Aqui, temos uma discussão detalhada sobre matrizes de comprimento variável na introdução. Assim, aprendemos que o C ++ proíbe as matrizes de comprimento variável (VLA). Especificamos algumas maneiras acima para implementar a matriz de comprimento variável em C ++ e maneiras alternativas da matriz de comprimento variável. Estes podem ser úteis ao interagir com as matrizes de comprimento variável em C++.