Error ISO C ++ prohíbe la matriz de longitud de la variable

Error ISO C ++ prohíbe la matriz de longitud de la variable
Las matrices de tamaño variable (VLA) no están prohibidas en C ++; El error ISO es correcto. Las matrices de tamaño de tiempo de ejecución o de tamaño variable son los otros nombres para matrices de longitud variable. El tamaño de estas matrices se establece en tiempo de ejecución. Entre los tipos que se pueden actualizar se encuentran las matrices y punteros de longitud variable para matrices de longitud variable. Los tipos modificados de forma variable deben definirse a nivel de prototipo de bloque o función. Las matrices de longitud variable son una característica que nos permite asignar una matriz automática de tamaño variable en la pila. En una declaración typedef, se puede utilizar. Desde el estándar C ++ en adelante, C habilita matrices de tamaño variable. El siguiente programa, por ejemplo, se compila y se ejecuta perfectamente en C. Void PrintArray (int n)

int Array [n];
// ..

int main ()

PrintArray (8);

Sin embargo, las matrices de tamaño variable no son compatibles con el estándar C ++ (hasta C ++ 11). El tamaño de la matriz es una expresión constante en el estándar C ++ 11. Como resultado, el programa anterior puede no ser un programa C ++ aceptable. Como el compilador GCC tiene una extensión para acomodarlos, el programa puede funcionar con el compilador GCC. Como poco más, el tamaño de la matriz ahora es una expresión simple en C ++ 14 (no expresión constante).

No es deseable tener que generar una matriz potencialmente grande en una pila con espacio limitado. Si no tiene en cuenta con anticipación, escribiremos un código dañino. Las matrices de longitud variable no son compatibles de forma nativa en C ++ porque necesitarían cambios significativos en el sistema de tipo.

Aquí, en el artículo de C ++, mostraremos cómo superar el error de matriz de longitud de variable prohibida de C ++ ISO en el momento de la compilación.

Ejemplo 1: programa para implementar una matriz de longitud variable en C ++ con el compilador GCC

Las matrices de longitud variable pueden elegir cualquier tamaño que el usuario desee, yo.mi., pueden ser variables en tamaño. El siguiente es un programa C ++ para crear matrices de longitud variable:

Tenemos archivos de encabezado C ++ en el primer paso y el archivo de espacio de nombres. Después de eso, tenemos el método principal del programa, y ​​el cuerpo principal tiene la declaración de la variable del puntero como "matriz" y la otra variable "ARR_SIZE" Declaración. El cout imprime la declaración que le pide al usuario un número para el tamaño de la matriz. Entonces, CIN tomará el valor número del usuario. La variable "matriz" se llama donde hemos establecido el tamaño de la matriz.

Ahora, también hemos solicitado los valores de la matriz del usuario. El valor de la matriz iterará por el bucle para que alcance el tamaño de la matriz. Luego, el segundo para el bucle se usa para imprimir los valores dentro de la matriz, y al mismo tiempo, hemos eliminado la matriz utilizando la expresión de eliminación [] en el programa.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
int *array, arr_size;
cout<<"Enter array size: "Arr_size;
Array = new int [arr_size];
cout<<"Enter array values: "<para (int i = 0; i> array [i];
cout<<"Array: ";
para (int i = 0; icout<cout<regresar 0;

El shell muestra un mensaje para ingresar el tamaño de la matriz después de la compilación. Cuando el usuario ingresa el tamaño de la matriz y luego, el shell le pide al usuario que establezca los valores para la matriz. El tamaño de la matriz y sus elementos son accesibles de la siguiente manera. Por lo tanto, podemos implementar una matriz de longitud variable en C ++ sin una excepción prohibida.

Ejemplo 2: programa para implementar una matriz de longitud variable en C ++ utilizando vectores

El C ++ STL proporciona un vector como alternativa a las matrices de longitud variable. Es adecuado para una variedad de aplicaciones. Será más claro con el programa C ++, que hemos implementado a continuación.

Como tenemos que usar vectores en nuestro programa. Entonces, la parte más importante es definir el vector como un archivo de encabezado en la parte superior de la implementación del código. Hemos agregado el archivo vectorial en la sección del encabezado.

Dentro del programa principal, tenemos una clase vectorial con Tipo int, y la clase de vectores tiene una variable "V."Hemos agregado cinco elementos de tipo entero en el vector. Después de eso, tenemos un ciclo de iteración para bucle. Dentro del bucle for, hemos declarado un iterador a un vector con una nueva variable "."Entonces, la variable" it "tiene una función de comienzo y finalización para mostrar los elementos de los vectores.

#incluir
#incluir
usando el espacio de nombres STD;
int main ()
Vector V;
V.push_back (10);
V.push_back (20);
V.push_back (30);
V.push_back (40);
V.push_back (50);
para (vector :: iterator it = v.comenzar(); él != V.fin(); it ++)
cout<< *it <
regresar 0;

El programa anterior da la salida de esta manera.

Ejemplo 3: programa para implementar una matriz de longitud variable en C ++ usando std :: vector

Los vectores se utilizan para transportar tipos de datos comparables en C++. El tamaño de un vector, a diferencia de las matrices, puede crecer dinámicamente. Podemos ajustar el tamaño del vector según sea necesario a lo largo de la ejecución del programa. El archivo de encabezado vectorial debe incluirse en nuestro programa para utilizar vectores. Una vez que la biblioteca de vector se incluye en el archivo de encabezado, podemos utilizar vector como std :: vector en el programa.

Después de incluir la biblioteca vectorial en la parte superior, hemos llamado al vector std :: dentro de la función principal del programa. El vector se declara como "números" y se inicializa con los cinco valores numéricos aleatorios. El "número" variable se define nuevamente, que tiene tres elementos vectoriales del contenedor vectorial anterior. El std :: cout se usa para mostrar la longitud del vector dentro del "número" variable utilizando la función de tamaño.

#incluir
#incluir
int main ()

std :: vector números = 10, 20, 30, 40, 50;
números = 30, 40, 50;
std :: cout<< "Array Length : " <regresar 0;

La salida muestra la longitud de la matriz vectorial especificada de la siguiente manera.

Conclusión

Resumiendo! Aquí, tenemos una discusión detallada sobre las matrices de longitud variable en la introducción. Por lo tanto, aprendimos que C ++ prohíbe matrices de longitud variable (VLA). Hemos especificado algunas formas anteriores para implementar la matriz de longitud variable en C ++ y formas alternativas de la matriz de longitud variable. Estos pueden ser útiles al interactuar con las matrices de longitud variable en C++.