Fehler ISO C ++ verbietet das Array der variablen Länge

Fehler ISO C ++ verbietet das Array der variablen Länge
Arrays der variablen Größe (VLAs) sind in C ++ nicht verboten; Der ISO -Fehler ist korrekt. Arrays von Laufzeitgröße oder Arrays in variabler Größe sind die anderen Namen für Arrays mit variabler Länge. Die Größe dieser Arrays ist zur Laufzeit eingestellt. Unter den Arten, die aktualisiert werden können. Variablen modifizierte Typen sollten entweder auf der Ebene des Block- oder Funktionsprototyps definiert werden. Arrays mit variabler Länge sind eine Funktion, mit der wir ein Auto-Array in variabler Größe auf dem Stapel zuordnen können. In einer Typedef -Anweisung kann es verwendet werden. Ab dem C ++-Standard ermöglicht C Arrays variabler Größe. Das nachstehende Programm zum Beispiel kompiliert und läuft perfekt in C. void printArray (int n)

int Array [n];
//…

int main ()

PrintArray (8);

Arrays in variabler Größe werden jedoch erst vom C ++-bis C ++ 11 unterstützt). Arraygröße ist ein konstanter Ausdruck im C ++ - 11 -Standard. Infolgedessen ist das obige Programm möglicherweise kein akzeptables C ++ - Programm. Da der GCC -Compiler eine Erweiterung für sie hat, kann das Programm mit dem GCC -Compiler funktionieren. Die Arraygröße ist jetzt ein einfacher Ausdruck in C ++ 14 (nicht konstante Expression).

Es ist nicht wünschenswert, ein potenziell großes Array auf einem Stapel mit begrenztem Platz zu erzeugen. Wenn Sie sich nicht im Voraus bewusst sind, schreiben wir schädlichen Code. Arrays variabler Länge werden in C ++ nicht nativ unterstützt, da sie signifikante Änderungen des Typsystems erforderlich machen würden.

Hier werden wir im Artikel von C ++ zeigen.

Beispiel 1: Programm zur Implementierung eines Array mit variabler Länge in C ++ mit GCC-Compiler

Arrays mit variabler Länge können jede Größe auswählen, die der Benutzer wünscht, i.e., Sie können in der Größe variabel sein. Das Folgende ist ein C ++-Programm zum Erstellen von Arrays mit variabler Länge:

Wir haben C ++ - Header -Dateien im ersten Schritt und in der Namespace -Datei. Danach haben wir die Hauptmethode der Programm, und die Hauptkörper hat die Zeigervariablenerklärung als "Array" und die andere Deklaration "arr_size". Das Cout druckt die Anweisung, die dem Benutzer eine Nummer für die Array -Größe auffordert. Dann nimmt CIN den Nummernwert vom Benutzer ab. Die Variable „Array“ wird aufgerufen, wo wir die Größe des Arrays festgelegt haben.

Jetzt haben wir auch die Array -Werte vom Benutzer angefordert. Der Array -Wert wird durch die für die für die Schleife iteriert, bis er die Array -Größe erreicht. Anschließend wird die zweite für die Schleife verwendet, um die Werte im Array zu drucken, und gleichzeitig haben wir das Array mit dem Ausdruck des Löschens [] im Programm gelöscht.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
int *array, arr_size;
Cout<<"Enter array size: "Arr_size;
Array = new int [arr_size];
Cout<<"Enter array values: "<für (int i = 0; i> Array [i];
Cout<<"Array: ";
für (int i = 0; iCout<Cout<Rückkehr 0;

Die Shell zeigt eine Nachricht zum Eingeben der Array -Größe nach der Kompilierung an. Wenn der Benutzer die Größe des Arrays dann eingibt, fordert die Shell den Benutzer auf, die Werte für das Array festzulegen. Die Größe des Arrays und seiner Elemente ist wie folgt zugänglich. Daher können wir ein Array mit variabler Länge in C ++ ohne verbotene Ausnahme implementieren.

Beispiel 2: Programm zur Implementierung eines Arrays variabler Länge in C ++ unter Verwendung von Vektoren

Das C ++-STL liefert einen Vektor als Alternative zu Arrays mit variabler Länge. Es ist für eine Vielzahl von Anwendungen geeignet. Mit dem C ++ - Programm, das wir unten implementiert haben.

Da müssen wir Vektoren in unserem Programm verwenden. Der wichtigste Teil ist also, den Vektor als Header -Datei oben in der Code -Implementierung zu definieren. Wir haben die Vektordatei im Abschnitt des Headers hinzugefügt.

Innerhalb des Programms haben wir eine Vektorklasse mit Typ int und die Vektorenklasse hat eine Variable „V.Wir haben fünf Elemente vom Typ Ganzzahl im Vektor hinzugefügt. Danach haben wir einen für Schleifen -Iterationszyklus. In der für Schleife haben wir einen Iterator zu einem Vektor mit einer neuen Variablen „It“ deklariert.Die Variable "IT" hat dann eine Start- und Endfunktion, um die Elemente der Vektoren anzuzeigen.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
Vektor V;
v.push_back (10);
v.push_back (20);
v.push_back (30);
v.push_back (40);
v.push_back (50);
für (vector :: iterator it = v.Start(); Es != v.Ende(); es ++)
Cout<< *it <
Rückkehr 0;

Das obige Programm gibt die Ausgabe wie diese an.

Beispiel 3: Programm zur Implementierung eines Arrays variabler Länge in C ++ unter Verwendung von STD :: Vektor

Vektoren werden verwendet, um vergleichbare Datentypen in C zu tragen++. Die Größe eines Vektors kann im Gegensatz zu Arrays dynamisch wachsen. Wir können die Vektorgröße bei Bedarf während der gesamten Programmausführung einstellen. Die Vektor -Header -Datei muss in unser Programm aufgenommen werden, um Vektoren zu verwenden. Sobald die Vektorbibliothek in der Header -Datei enthalten ist, können wir Vektor als std :: vector im Programm verwenden.

Nachdem wir die Vektorbibliothek oben aufgenommen haben, haben wir den Std :: Vector in die Hauptfunktion des Programms bezeichnet. Der Vektor wird als „Zahlen“ deklariert und mit den fünf zufälligen numerischen Werten initialisiert. Die Variable „Zahl“ ist erneut definiert, die drei Vektorelemente aus dem oben gegebenen Vektorbehälter enthält. Die STD :: Cout wird verwendet, um die Länge des Vektors innerhalb der Variablenzahl mithilfe der Größenfunktion anzuzeigen.

#enthalten
#enthalten
int main ()

STD :: Vektornummern = 10, 20, 30, 40, 50;
nummern = 30, 40, 50;
std :: Cout<< "Array Length : " <Rückkehr 0;

Der Ausgang zeigt die Länge des angegebenen Vektorarrays wie folgt.

Abschluss

Zusammenfassen! Hier haben wir eine detaillierte Diskussion über Arrays mit variabler Länge in der Einführung. Daher haben wir gelernt, dass C ++ Variable-Langzeit-Arrays (VLA) verbietet. Wir haben oben einige Möglichkeiten angegeben, um das Array der variablen Länge in C ++ und alternative Arten des Arrays variabler Länge zu implementieren. Diese können bei der Interaktion mit den Arrays variabler Länge in C praktisch sein++.