Errore ISO C ++ proibisce l'array di lunghezza variabile

Errore ISO C ++ proibisce l'array di lunghezza variabile
Gli array di dimensioni variabili (VLA) non sono vietati in C ++; L'errore ISO è corretto. Gli array di dimensioni runtime o di dimensioni variabili sono gli altri nomi per array di lunghezze variabili. La dimensione di questi array è impostata in fase di esecuzione. Tra i tipi che possono essere aggiornati ci sono array e puntatori a lunghezza variabile a array di lunghezze variabili. I tipi variabilmente modificati devono essere definiti a livello di prototipo di blocco o funzione. Gli array a lunghezza variabile sono una funzione che ci consente di allocare un array automatico a grandezzatura variabile sullo stack. In un'istruzione typedef, può essere utilizzato. Dallo standard C ++ in poi, C abilita array di dimensioni variabili. Il programma di seguito, ad esempio, compila e funziona perfettamente in C. void printarray (int n)

int array [n];
// ..

int main ()

PrintArray (8);

Tuttavia, gli array di dimensioni variabili non sono supportate dallo standard C ++ (fino a C ++ 11). La dimensione dell'array è un'espressione costante nello standard C ++ 11. Di conseguenza, il programma di cui sopra potrebbe non essere un programma C ++ accettabile. Poiché il compilatore GCC ha un'estensione per adattarli, il programma può funzionare con il compilatore GCC. Non più, la dimensione dell'array è ora un'espressione semplice in C ++ 14 (non espressione costante).

Non è desiderabile dover generare un array potenzialmente grande su uno stack con spazio limitato. Se non sei a conoscenza in anticipo, scriveremo un codice dannoso. Gli array di lunghezze variabili non sono supportati in modo nativo in C ++ perché richiederebbero cambiamenti di sistema di tipo significativi.

Qui, nell'articolo C ++, mostreremo come superare l'errore dell'array variabile ISO C ++ al momento della compilation.

Esempio 1: programma per implementare un array a lunghezza variabile in C ++ con compilatore GCC

Gli array di lunghezze variabili possono scegliere qualsiasi dimensione che l'utente desidera, i.e., Possono essere di dimensioni variabili. Di seguito è riportato un programma C ++ per la creazione di array a lunghezza variabile:

Abbiamo file di intestazione C ++ nel primo passaggio e nel file dello spazio dei nomi. Successivamente, abbiamo il metodo principale del programma e il corpo principale ha la Dichiarazione della variabile puntatore come "Array" e l'altra Dichiarazione della variabile "Arr_Size". Il COUT stampa l'istruzione che chiede all'utente un numero per la dimensione dell'array. Quindi, CIN prenderà il valore del numero dall'utente. L'array variabile si chiama dove abbiamo impostato le dimensioni dell'array.

Ora, abbiamo anche richiesto i valori dell'array all'utente. Il valore dell'array iterirà per loop per raggiungere la dimensione dell'array. Quindi, il secondo per loop viene utilizzato per stampare i valori all'interno dell'array e allo stesso tempo abbiamo eliminato l'array usando l'espressione di Elimina [] nel programma.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()
int *array, arr_size;
cout<<"Enter array size: "Arr_size;
Array = new int [arr_size];
cout<<"Enter array values: "<per (int i = 0; i> array [i];
cout<<"Array: ";
per (int i = 0; icout<cout<restituzione 0;

La shell visualizza un messaggio per inserire la dimensione dell'array dopo la compilation. Quando l'utente inserisce la dimensione dell'array, quindi la shell chiede all'utente di impostare i valori per l'array. La dimensione dell'array e i suoi elementi sono accessibili come segue. Quindi, possiamo implementare un array a lunghezza variabile in C ++ senza un'eccezione proibita.

Esempio 2: programma per implementare un array a lunghezza variabile in C ++ usando i vettori

C ++ STL fornisce un vettore in alternativa agli array di lunghezze variabili. È adatto per una varietà di applicazioni. Sarà più chiaro con il programma C ++, che abbiamo implementato di seguito.

Come dobbiamo usare i vettori nel nostro programma. Quindi la parte più importante è definire il vettore come un file di intestazione nella parte superiore dell'implementazione del codice. Abbiamo aggiunto il file vettoriale nella sezione dell'intestazione.

All'interno del programma principale, abbiamo una classe vettoriale con tipo int e la classe Vectors ha una variabile “V."Abbiamo aggiunto cinque elementi di tipo intero nel vettore. Dopodiché, abbiamo un ciclo di iterazione per loop. All'interno del ciclo per, abbiamo dichiarato un iteratore a un vettore con una nuova variabile "It."Quindi, la variabile" IT "ha una funzione di inizio e fine per visualizzare gli elementi dei vettori.

#includere
#includere
Utilizzo dello spazio dei nomi 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);
per (vettoriale :: iterator it = v.inizio(); Esso != v.FINE(); it ++)
cout<< *it <
restituzione 0;

Il programma di cui sopra fornisce l'output come questo.

Esempio 3: programma per implementare un array a lunghezza variabile in C ++ utilizzando std :: vector

I vettori vengono utilizzati per trasportare tipi di dati comparabili in C++. La dimensione di un vettore, a differenza degli array, può crescere dinamicamente. Possiamo regolare la dimensione del vettore secondo necessità durante l'esecuzione del programma. Il file di intestazione vettoriale deve essere incluso nel nostro programma per utilizzare i vettori. Una volta inclusa la libreria vettoriale nel file di intestazione, possiamo utilizzare Vector come std :: vector nel programma.

Dopo aver incluso la libreria vettoriale in alto, abbiamo chiamato std :: vector all'interno della funzione principale del programma. Il vettore è dichiarato "numeri" e inizializzato con i cinque valori numerici casuali. Il "numero" variabile è nuovamente definito, che ha tre elementi vettoriali dal contenitore vettoriale sopra dato. La std :: cout viene utilizzata per visualizzare la lunghezza del vettore all'interno del "numero" variabile utilizzando la funzione dimensione.

#includere
#includere
int main ()

std :: numeri vettoriali = 10, 20, 30, 40, 50;
numeri = 30, 40, 50;
std :: cout<< "Array Length : " <restituzione 0;

L'uscita mostra la lunghezza dell'array vettoriale specificato come segue.

Conclusione

Riassumendo! Qui, abbiamo una discussione dettagliata su array di lunghezze variabili nell'introduzione. Pertanto, abbiamo appreso che C ++ proibisce gli array a lunghezza variabile (VLA). Abbiamo specificato alcuni modi sopra per implementare l'array a lunghezza variabile in C ++ e modi alternativi dell'array a lunghezza variabile. Questi potrebbero essere utili quando si interagiscono con gli array di lunghezza variabili in c++.