0Pricing
Zig Academy · Lektion

Dynamische Listen mit ArrayList

Vergrößern Sie einen von einem Allocator unterstützten Puffer.

Dynamische Listen mit ArrayList ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Ein erweiterbarer Puffer

Manchmal kennen Sie die Größe zu Beginn noch nicht. std.ArrayList ist ein dynamisches Array, das beim Hinzufügen von Elementen wächst und von einem Allocator verwaltet wird. 📈

Es ist generisch

ArrayList ist ein generischer Typ: Sie geben den Elementtyp einmal an und erhalten eine Liste genau dieses Typs mit vollständiger Typsicherheit.

const List = std.ArrayList(i32);

Mit init erstellen

Sie erstellen eine Liste mit init und übergeben ihr den Allocator, den sie zum Wachsen verwenden soll. Der Allocator bleibt während der gesamten Lebensdauer bei der Liste.

var list = std.ArrayList(i32).init(allocator);

Immer deinit aufrufen

Eine Liste besitzt Speicher auf dem Heap. Paaren Sie daher init mit deinit, um ihn freizugeben. Ein direkt auf init folgendes defer erledigt diese Bereinigung automatisch.

var list = std.ArrayList(i32).init(a);
defer list.deinit();

Elemente anhängen

Fügen Sie mit append ein Element hinzu. Dabei muss der Puffer möglicherweise wachsen, daher kann der Aufruf fehlschlagen und wird mit try verwendet.

try list.append(7);

Auf die Daten zugreifen

Die aktuellen Inhalte befinden sich im .items-Slice. Sie lesen, indizieren und durchlaufen diesen Slice wie jeden anderen Zig-Slice.

for (list.items) |n| std.debug.print("{}\n", .{n});

Länge und Kapazität

Die Länge ist list.items.len: die Anzahl der gespeicherten Werte. Die Kapazität ist der reservierte Platz, der größer sein kann, um häufiges erneutes Wachsen zu vermeiden.

Im Voraus reservieren

Wenn Sie die ungefähre Größe kennen, rufen Sie zuerst ensureTotalCapacity auf. Eine einmalige Reservierung vermeidet wiederholte Neuzuweisungen, während sich die Liste füllt.

try list.ensureTotalCapacity(100);

Elemente entfernen

Entfernen Sie das letzte Element mit pop oder ein Element aus der Mitte über seinen Index. Die Liste verkürzt ihre Länge, behält aber ihre Kapazität.

const last = list.pop();

Besitz übergeben

Rufen Sie toOwnedSlice auf, um den Puffer als einfachen Slice zu übernehmen. Die Liste wird geleert, und Sie sind dafür verantwortlich, ihn freizugeben.

const slice = try list.toOwnedSlice();

Auf den Grundlagen aufgebaut

ArrayList erledigt lediglich alloc, Kopieren und free für Sie. Es zeigt, wie weit man mit expliziten Allocatoren und einem übersichtlichen, wiederverwendbaren Typ kommt. ✅

Kurztest

Rufen Sie sich in Erinnerung, was Sie tun müssen, wenn eine ArrayList nicht mehr verwendet wird.

Zusammenfassung

Sie haben gelernt, dass std.ArrayList mithilfe eines Allocators dynamisch wächst: init, append mit try, Zugriff auf .items und immer deinit am Ende. 🎯

Häufig gestellte Fragen

Ist die Lektion „Dynamische Listen mit ArrayList“ kostenlos?

Ja — der vollständige Text von „Dynamische Listen mit ArrayList“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Dynamische Listen mit ArrayList“?

Vergrößern Sie einen von einem Allocator unterstützten Puffer. Du übst Zig Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Zig Academy zu starten?

Keine Vorkenntnisse erforderlich. Zig Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Dynamische Listen mit ArrayList“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Zig Academy-Lektion Code schreiben und ausführen?

Ja. Jede Zig Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum Zig keine verborgenen Allokationen hat
  2. Die Allocator-Schnittstelle
  3. alloc, free, create, destroy
  4. Dynamische Listen mit ArrayList
← Zurück zu Zig Academy