Liste dinamiche con ArrayList
Far crescere un buffer supportato da un allocatore
Liste dinamiche con ArrayList è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.
Un buffer espandibile
A volte non si conosce in anticipo la dimensione. std.ArrayList è un array dinamico che cresce man mano che si aggiungono elementi, usando un allocatore. 📈
È generico
ArrayList è un tipo generico: si specifica una volta il tipo degli elementi e si ottiene una lista composta esattamente da quel tipo, con piena sicurezza dei tipi.
const List = std.ArrayList(i32);Crearlo con init
Si crea una lista con init, fornendole l'allocatore che userà per crescere. L'allocatore rimane associato alla lista per tutta la sua durata.
var list = std.ArrayList(i32).init(allocator);Usare sempre deinit
Una lista possiede memoria nell'heap, quindi si abbina init a deinit per liberarla. Un defer subito dopo init rende automatica questa pulizia.
var list = std.ArrayList(i32).init(a);
defer list.deinit();Aggiungere elementi
Si aggiunge un elemento con append. Potrebbe essere necessario espandere il buffer, quindi l'operazione può fallire e va chiamata con try.
try list.append(7);Accedere ai dati
Il contenuto corrente si trova nella slice .items. Si può leggere, indicizzare e attraversare questa slice proprio come qualsiasi altra slice Zig.
for (list.items) |n| std.debug.print("{}\n", .{n});Lunghezza e capacità
La lunghezza è list.items.len: il numero di valori memorizzati. La capacità è lo spazio riservato, che può essere maggiore per evitare frequenti espansioni.
Riservare spazio in anticipo
Se conosce approssimativamente la dimensione necessaria, chiami prima ensureTotalCapacity. Una sola prenotazione evita riallocazioni ripetute mentre la lista si riempie.
try list.ensureTotalCapacity(100);Rimuovere elementi
Si rimuove l'ultimo elemento con pop, oppure un elemento intermedio tramite il suo indice. La lista riduce la lunghezza, ma mantiene la capacità.
const last = list.pop();Trasferire la proprietà
Chiami toOwnedSlice per estrarre il buffer sotto forma di semplice slice. La lista si svuota e la responsabilità di liberarlo passa a Lei.
const slice = try list.toOwnedSlice();Costruito sulle basi
ArrayList non è altro che alloc, copy e free gestiti automaticamente. Dimostra quanto si possa ottenere con allocatori espliciti e un tipo ordinato e riutilizzabile. ✅
Verifica rapida
Ricordi cosa deve fare quando un ArrayList non viene più utilizzato.
Riepilogo
Ha imparato che std.ArrayList cresce dinamicamente usando un allocatore: init, append con try, lettura di .items e deinit obbligatorio al termine. 🎯
Domande Frequenti
La lezione «Liste dinamiche con ArrayList» è gratuita?
Sì — il testo completo di «Liste dinamiche con ArrayList» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.
Cosa imparerò in «Liste dinamiche con ArrayList»?
Far crescere un buffer supportato da un allocatore Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Zig Academy?
Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Liste dinamiche con ArrayList»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Zig Academy?
Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché Zig non ha allocazioni nascoste
- L'interfaccia dell'allocatore
- alloc, free, create, destroy
- Liste dinamiche con ArrayList