Was ist ein dynamisches Array?
Ein dynamisches Array ist einem normalen Array ziemlich ähnlich, aber seine Größe kann während der Programmlaufzeit geändert werden. DynamArray-Elemente belegen einen zusammenhängenden Speicherblock.
Sobald ein Array erstellt wurde, kann seine Größe nicht mehr geändert werden. Ein dynamisches Array ist jedoch anders. Ein dynamisches Array kann seine Größe auch nach dem Füllen erweitern.
Während der Erstellung eines Arrays wird ihm eine vorgegebene Speichermenge zugewiesen. Dies ist bei einem dynamischen Array nicht der Fall, da es bei Bedarf seine Speichergröße um einen bestimmten Faktor vergrößert.
In diesem C ++ - Tutorial lernen Sie
- Was ist ein dynamisches Array?
- Faktoren, die die Leistung dynamischer Arrays beeinflussen
- Das neue Schlüsselwort
- Dynamisch zugewiesene Arrays initialisieren
- Ändern der Größe von Arrays
- Arrays dynamisch löschen
Faktoren, die die Leistung dynamischer Arrays beeinflussen
Die anfängliche Größe des Arrays und sein Wachstumsfaktor bestimmen seine Leistung. Beachten Sie die folgenden Punkte:
- Wenn ein Array eine kleine Größe und einen kleinen Wachstumsfaktor hat, wird der Speicher immer häufiger neu zugewiesen. Dies verringert die Leistung des Arrays.
- Wenn ein Array eine große Größe und einen großen Wachstumsfaktor hat, verfügt es über einen großen Teil des nicht verwendeten Speichers. Aus diesem Grund kann die Größenänderung länger dauern. Dies verringert die Leistung des Arrays.
Das neue Schlüsselwort
In C ++ können wir mit dem neuen Schlüsselwort ein dynamisches Array erstellen. Die Anzahl der zuzuordnenden Elemente wird in eckigen Klammern angegeben. Der Typname sollte davor stehen. Die angeforderte Anzahl von Elementen wird zugewiesen.
Syntax:
Das neue Schlüsselwort hat die folgende Syntax:
pointer_variable = new data_type;
Die Zeigervariable ist der Name der Zeigervariable.
Der Datentyp muss ein gültiger C ++ - Datentyp sein.
Das Schlüsselwort gibt dann einen Zeiger auf das erste Element zurück. Nachdem Sie das dynamische Array erstellt haben, können Sie es mit dem Schlüsselwort delete löschen.
Beispiel 1:
#includeusing namespace std;int main() {int x, n;cout << "Enter the number of items: << "\n";cin >>n;int *arr = new int(n);cout << "Enter " << n << " items" << endl;for (x = 0; x < n; x++) {cin >> arr[x];}cout << "You entered: ";for (x = 0; x < n; x++) {cout << arr[x] << " ";}return 0;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Nehmen Sie die iostream-Header-Datei in unser Programm auf, um ihre Funktionen zu nutzen.
- Nehmen Sie den Standard-Namespace in unser Programm auf, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil der Funktion hinzugefügt werden.
- Deklarieren Sie zwei ganzzahlige Variablen x und n.
- Drucken Sie Text auf die Konsole und fordern Sie den Benutzer auf, den Wert der Variablen n einzugeben.
- Lesen Sie Benutzereingaben von der Tastatur und weisen Sie sie der Variablen n zu.
- Deklarieren Sie ein Array für insgesamt n Ganzzahlen und weisen Sie es der Zeigervariablen * arr zu.
- Drucken Sie eine Nachricht, in der der Benutzer aufgefordert wird, n Elemente einzugeben.
- Verwenden Sie eine for-Schleife, um eine Schleifenvariable x zu erstellen, die über die vom Benutzer eingegebenen Elemente iteriert.
- Lesen Sie die vom Benutzer eingegebenen Elemente und speichern Sie sie im Array arr.
- Ende des Körpers der for-Schleife.
- Drucken Sie Text auf der Konsole.
- Verwenden Sie eine for-Schleife, um eine Schleifenvariable x zu erstellen, die über die Elemente des Arrays iteriert.
- Drucken Sie die im Array arr enthaltenen Werte auf der Konsole aus.
- Ende des Körpers der for-Schleife.
- Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
- Ende des Körpers der main () - Funktion.
ANMERKUNG: Im obigen Beispiel kann der Benutzer zur Laufzeit eine beliebige Größe für das Array angeben. Dies bedeutet, dass die Größe des Arrays zur Laufzeit bestimmt wird .
Dynamisch zugewiesene Arrays initialisieren
Es ist einfach, ein dynamisches Array auf 0 zu initialisieren.
Syntax:
int *array{ new int[length]{} };
In der obigen Syntax gibt die Länge die Anzahl der Elemente an, die dem Array hinzugefügt werden sollen. Da wir das Array auf 0 initialisieren müssen, sollte dies leer bleiben.
Wir können ein dynamisches Array mithilfe einer Initialisierungsliste initialisieren. Lassen Sie uns ein Beispiel erstellen, das dies demonstriert.
Beispiel 2:
#includeusing namespace std;int main(void) {int x;int *array{ new int[5]{ 10, 7, 15, 3, 11 } };cout << "Array elements: " << endl;for (x = 0; x < 5; x++) {cout << array[x] << endl;}return 0;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Nehmen Sie die iostream-Header-Datei in unser Programm auf, um ihre Funktionen zu nutzen.
- Nehmen Sie den Standard-Namespace in unser Programm auf, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil der Funktion hinzugefügt werden.
- Deklarieren Sie eine Ganzzahlvariable mit dem Namen x.
- Deklarieren Sie ein dynamisches Array mit dem Namen array mithilfe einer Initialisierungsliste. Das Array enthält 5 ganzzahlige Elemente. Beachten Sie, dass wir den Operator zwischen der Array-Länge und der Initialisierungsliste nicht verwendet haben.
- Drucken Sie Text auf der Konsole. Das endl ist ein C ++ - Schlüsselwort, das Endzeile bedeutet. Es bewegt den Cursor zum nächsten Satz.
- Verwenden Sie eine for-Schleife, um die Array-Elemente zu durchlaufen.
- Drucken Sie den Inhalt des Arrays mit dem Namen array auf der Konsole.
- Ende des Körpers der for-Schleife.
- Das Programm muss nach erfolgreichem Abschluss einen Wert zurückgeben.
- Ende des Körpers der main () - Funktion.
Ändern der Größe von Arrays
Die Länge eines dynamischen Arrays wird während der Zuweisungszeit festgelegt.
C ++ verfügt jedoch nicht über einen integrierten Mechanismus zum Ändern der Größe eines Arrays, sobald es zugewiesen wurde.
Sie können diese Herausforderung jedoch bewältigen, indem Sie ein neues Array dynamisch zuweisen, über die Elemente kopieren und dann das alte Array löschen.
Hinweis: Diese Technik ist fehleranfällig. Versuchen Sie daher, sie zu vermeiden.
Arrays dynamisch löschen
Ein dynamisches Array sollte aus dem Computerspeicher gelöscht werden, sobald sein Zweck erfüllt ist. Die delete-Anweisung kann Ihnen dabei helfen. Der freigegebene Speicherplatz kann dann verwendet werden, um einen anderen Datensatz aufzunehmen. Selbst wenn Sie das dynamische Array nicht aus dem Computerspeicher löschen, wird es automatisch gelöscht, sobald das Programm beendet wird.
Hinweis:
Um ein dynamisches Array aus dem Computerspeicher zu löschen, sollten Sie delete [] anstelle von delete verwenden. Das [] weist die CPU an, mehrere Variablen anstelle einer Variablen zu löschen. Die Verwendung von delete anstelle von delete [] beim Umgang mit einem dynamischen Array kann zu Problemen führen. Beispiele für solche Probleme sind Speicherlecks, Datenbeschädigung, Abstürze usw.
Beispiel 3:
#includeusing namespace std;int main() {int x, n;cout << "How many numbers will you type?" << "\n";cin >>n;int *arr = new int(n);cout << "Enter " << n << " numbers" << endl;for (x = 0; x < n; x++) {cin >> arr[x];}cout << "You typed: ";for (x = 0; x < n; x++) {cout << arr[x] << " ";}cout << endl;delete [] arr;return 0;}
Ausgabe:
Hier ist ein Screenshot des Codes:
Code Erläuterung:
- Nehmen Sie die iostream-Header-Datei in unser Programm auf, um ihre Funktionen nutzen zu können.
- Nehmen Sie den Standard-Namespace in unser Programm auf, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Rufen Sie die Funktion main () auf. Die Programmlogik sollte im Hauptteil der Funktion hinzugefügt werden.
- Deklarieren Sie zwei Variablen x und n des Integer-Datentyps.
- Drucken Sie Text auf der Konsole. Der Text fordert den Benutzer auf, die Anzahl der eingegebenen Nummern anzugeben.
- Lesen Sie Benutzereingaben von der Tastatur. Der Eingabewert wird der Variablen n zugewiesen.
- Deklarieren Sie eine Zeigervariable * arr. Das Array arr reserviert etwas Speicher, um insgesamt n ganze Zahlen zu speichern.
- Drucken Sie eine Nachricht auf der Konsole, in der der Benutzer aufgefordert wird, n Zahlen einzugeben.
- Erstellen Sie eine for-Schleife und die Schleifenvariable x, um die vom Benutzer eingegebenen Zahlen zu durchlaufen.
- Lesen Sie die vom Benutzer eingegebenen Nummern und speichern Sie sie im Array arr.
- Ende des Körpers der for-Schleife.
- Drucken Sie Text auf der Konsole.
- Verwenden Sie eine for-Schleife und die Schleifenvariable x, um den Inhalt des Arrays arr zu durchlaufen.
- Drucken Sie die Werte des Arrays arr auf der Konsole aus.
- Ende des Körpers der for-Schleife.
- Drucken Sie eine leere Zeile auf der Konsole.
- Geben Sie den Speicher des Arrays frei.
- Das Programm gibt den Wert zurück, wenn es erfolgreich abgeschlossen wurde.
- Ende des Körpers der main () - Funktion.
Zusammenfassung:
- Normale Arrays haben eine feste Größe. Sie können ihre Größe nach der Deklaration nicht mehr ändern.
- Bei diesen Arten von Arrays wird die Speichergröße während der Kompilierungszeit bestimmt.
- Dynamische Arrays sind unterschiedlich. Ihre Größe kann zur Laufzeit geändert werden.
- In dynamischen Arrays wird die Größe zur Laufzeit bestimmt.
- Dynamische Arrays in C ++ werden mit dem neuen Schlüsselwort deklariert.
- Wir verwenden eckige Klammern, um die Anzahl der Elemente anzugeben, die im dynamischen Array gespeichert werden sollen.
- Sobald wir mit dem Array fertig sind, können wir den Speicher mit dem Löschoperator freigeben.
- Verwenden Sie den Löschoperator mit [], um den Speicher aller Array-Elemente freizugeben.
- Ein Löschen ohne [] gibt den Speicher nur eines einzelnen Elements frei.
- Es gibt keinen integrierten Mechanismus zum Ändern der Größe von C ++ - Arrays.
- Um ein Array mit einem Listeninitialisierer zu initialisieren, verwenden wir nicht den Operator .